我有一个wordpress页面,上面有我最近一次旅行的地图。
http://www.marksmayo.com/south-american-journey/
如果我写一个基本的php查询函数来列出‘南美2010’类别中的所有帖子,它对4-5篇帖子很好,但当我将帖子添加到类别中时,它开始用这个查询耗尽内存(在页面上给出错误),现在就是不加载地图下面的任何东西。
相同的代码是on:
http://www.marksmayo.com/northern-europe-and-asia-mission/
目前正在工作,但随着我添加更多的帖子,这可能也会停止。
代码是:
<?php
// The Query
query_posts( array ( 'category_name' => 'south america 2010', 'posts_per_page' => -1 ) );
// The Loop
while ( have_posts() ) : the_post();
echo '<li><a href=';
the_permalink();
echo'>';
the_title();
echo '</a></li>';
endwhile;
// Reset Query
wp_reset_query();
?>发布于 2011-05-22 01:14:41
两件事:使用更简单的查询和提高WP的内存分配。
尝试这个查询,它会自动重置,并且可以在页面(执行php时)或页面模板中使用任意次数。将类别和showpost的名称更改为数字,或-1以显示全部。
<?php $my_query = new WP_Query('category_name=mycategory&showposts=10'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
<?php the_title(); ?></a>
<?php endwhile; ?>在wp-config.php中提升wp的内存分配,使其接近顶部:
define('WP_MEMORY_LIMIT', '64M');并检查您帐户中的php.ini文件,看看php内存是否设置为非常低的限制。你在Bluehost上,所以如果你没有php.ini文件,你可以在Cpanel的php配置中添加一个php.ini,然后在你的根账户中编辑它。
Bluehost将允许php使用这么多的RAM,但要知道Bluehost有时会限制您的帐户CPU;检查Cpanel的CPU使用率和节流量。
发布于 2011-05-22 00:35:40
我将使用类别ID而不是类别段塞,因此您的查询将变为:
query_posts( array ( 'cat' => 4, 'posts_per_page' => -1 ) );(我假设整数搜索会更快,密集度更低。)(显然将4替换为您的类别ID)。
您还可以删除对'the_title()‘的调用,并将其替换为$post->post_title,因为您已经调用了the_post(),尽管老实说,我不能100%确定这是否会产生影响。
另外,如果你在共享主机上,你可以考虑一个缓存插件。我推荐W3 Total Cache,它只会在内容实际更新时运行这个查询来构建平面文件。
最后,在你的代码片段之前是什么,你还没有把它放在一个循环中,所以它循环了其他的东西,并且每次都运行它,是吗?
发布于 2011-05-26 20:59:00
即使您达到了另一个答案中建议的wp-config.php文件中的内存限制,您也无法逃脱内存不足的问题,因为$wpdb管理内存的方式非常浪费。(在WP3.0中,它为检索到的每一行创建并存储两个副本,即便如此,与早期版本相比,这也是一个巨大的改进。)
我建议将每页的帖子数量限制在更合理的范围内,例如50个。
https://stackoverflow.com/questions/6049318
复制相似问题