我正在生成一个站点地图xml,我在25mil帖子上使用query_posts()。
我的查询超过了我的400万内存限制大约10k帖子。有没有一种技术可以解决这个问题?
我只是尝试做递归但是也没有用(我只是意识到php文件在每次递归时都会运行哈哈)但是这里是我的代码:
ini_set('display_errors', 'On');
require('../../wp/wp-blog-header.php');
include 'src/SitemapPHP/Sitemap.php';
use SitemapPHP\Sitemap;
$sitemap = new Sitemap('http://www.example.com');
$sitemap->setPath('../xmls/');
$offset = 0;
function parsePosts($offset, $sitemap, $posts = null)
{
if($posts == null){
$posts = query_posts('post_type=services&posts_per_page=10000&offset='.$offset);
}
$count = 0;
foreach ($posts as $post) : start_wp();
$count++;
$sitemap->addItem('/services-view/' . $post->post_name);
endforeach;
$offset += $count;
echo $offset;
if($count == 10000) {
parsePosts($offset, $sitemap);
}
}
parsePosts($offset, $sitemap);
$sitemap->createSitemapIndex('http://www.example.com/', 'Today');
编辑,我在查询失败时也收到此错误:处理此指令时出错