php - 站点地图 PHP Mysql Split 45000

标签 php mysql

<?php

include 'conexao.php';
include 'acoes.php';

$sql = mysql_query("select nome, nota from aluno");

$a = 0;
while ($string = mysql_fetch_array($sql))
{
    if ($a == 0)
    {
        $data = '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9     http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
        $data .= '<?xml version=\'1.0\' encoding=\'UTF-8\'?>';
        $data .= '<urlset>';
    }

    $data .= '<url>';
    $data .= '<loc>http://www.escola.com.br/' . removerosAcentos($string['nome']);
    $data .= $string['nota'] . '</loc>';
    $data .= '<changefreq>weekly</changefreq>';
    $data .= '</url>';
    $a += 1;
    if ($a >= 45000)
    {
        $data .= '</urlset>';
        $a = 0;

        $nome_arquivo = uniqid();
        header('Content-disposition: attachment; filename="' . $nome_arquivo . '.xml"');
        header('Content-type: "text/xml"; charset="utf8"');
        readfile($nome_arquivo . '.xml');

    }
}
?> 

文件中的数据被卡在变量$data中,只需使用其数据将信息插入XML中

如何通过创建每个站点地图包含 45,000 条记录的站点地图(sitemap1.xml、sitemap2.xml)来继续使用代码

有人可以帮忙吗?

最佳答案

在 SQL 语句中使用偏移量和限制。

$part = (int) $_GET['part']; // Use http://domain/url?part=0 for first part and so on
if ($part < 0) { 
    $part = 0; // To prevent illegal query
}

$perPart = 45000;
$offset = $part * $perPart;

$sql = mysql_query("select nome, nota from aluno limit $offset , $perPart");

注意:mysql_ 函数已弃用,在编写新代码时不应再使用。请参阅 php.net/mysql_query 上的红色警告。考虑迁移到 MySQLi 或 PDO。

关于php - 站点地图 PHP Mysql Split 45000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45465689/

相关文章:

php - 生成此图形填充的算法的名称是什么

php - 显示从 Laravel 数据库中选中的复选框

mysql - SQL:电子邮件的最常出现的用户名,按电子邮件中的大多数条目排序

php - 通过激活链接验证电子邮件帐户

php - 带百分比和限制的 PDO 准备语句

php - Javascript、PHP 和 MySQL 集成

php - 如何修改已执行的 Laravel 查询生成器

php - Eloquent 地同时在多个表上使用嵌套的 json 结果,如 'with' 所做的

mysql - 我需要导入mysql 5.1到5.5?

mysql - 在单个查询中显示标记和最大标记