如何使自定义帖子类型不查询所有帖子

时间:2012-10-21 15:44:57

标签: php wordpress-plugin

我有一个自定义帖子类型,其中包含超过100k的帖子。当我尝试在管理面板中转到帖子类型的主页面时,我收到错误:

致命错误:第506行/home/spottercharts/spottercharts.com/wp-includes/cache.php中允许的内存大小为94371840字节(尝试分配84个字节)

主页面通常会列出该类型的所有帖子。由于有这么多,它占用了所有的PHP内存。

如果现在增加php.ini中的PHP内存不是一个选项,还有另一种方法让Wordpress不查询该类型的所有帖子吗?我只需要能够搜索帖子,而不是全部列出。如果没有,有没有办法优化这个帖子类型,所以它不会消​​耗这么多的内存?

1 个答案:

答案 0 :(得分:2)

我要问的第一件事是你如何获得超过10万的帖子?这在你的数据库中作为个人帖子有很多,我怀疑它们不是所有的实际帖子,而是用于其他目的?

你有几个选择:

短期 - 内存限制

可以通过多种方式在服务器上修改内存限制,具体取决于您的服务器配置或主机允许的内容。如果您没有root访问权限,则可以将php.ini文件放入网站的主目录中。

或者,通过添加以下内容修改您的.htaccess文件:

php_value memory_limit 256M

当您使用Wordpress时,您还可以将以下行添加到wp-config.php文件中:

define('WP_MEMORY_LIMIT', '256M');

更好的方法

显然,以上是至少让网站快速运行的好方法,但实际上这是非常高的使用率。

关于如何提高内存使用率的一些建议:

  1. 减小数据库的大小。你有替代方法吗? 可以用来减少你有多少个人帖子?
  2. 确保在使用query_posts时请求您要返回的特定号码。这将确保它停止从数据库中拉出太多,从而使服务器处理的次数减少。
  3. 您还可以执行许多其他操作,但实际上您需要考虑为什么数据库中包含如此多的数据,以及如何最大限度地减少Wordpress在返回数据时需要执行的查询和工作量。< / p>