【问题标题】:How to have a custom post type not query all posts如何让自定义帖子类型不查询所有帖子
【发布时间】:2012-10-21 15:44:57
【问题描述】:

我有一个自定义帖子类型,现在有超过 10 万个帖子。当我尝试在管理面板中转到帖子类型的主页时,出现错误:

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

主页通常会列出所有属于该类型的帖子。由于有这么多,它正在吃掉所有的 PHP 内存。

如果现在不能选择增加 php.ini 中的 PHP 内存,还有其他方法可以让 Wordpress 不查询该类型的所有帖子吗?我只需要搜索帖子的能力,而不是全部列出。如果没有,有没有办法优化这种帖子类型,使其不消耗太多内存?

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    我要问的第一件事是,您是如何获得超过 10 万条帖子的?在你的数据库中作为单独的帖子有很多东西,我怀疑它们并非都是实际的帖子,而是被用于其他目的?

    你有几个选择:

    短期 - 内存限制

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

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

    php_value memory_limit 256M
    

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

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

    更好的方法

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

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

    1. 减小数据库的大小。你有替代方法吗 可以用来减少你有多少个人帖子?
    2. 确保在使用query_posts 时请求一个您希望返回的特定号码。这将确保它不再从数据库中提取太多数据,从而使服务器无需处理。

    您还可以做许多其他事情,但实际上您需要考虑为什么数据库中有如此多的数据,以及如何最大限度地减少 Wordpress 为返回您的数据而需要承担的查询和工作量。

    【讨论】:

    • 都非常有帮助。我可能误会了帖子的数量。帖子大约有 8,000 个,而 postmeta 是 100k+。我尝试了几乎所有方法来更改内存限制,但无济于事。我猜它需要由主机增加,他需要一段时间才能回复我。
    • 我建议与他们联系并询问他们是否允许您修改它。当我使用共享主机时,他们通常很乐意提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多