问题描述

我在 WordPress 中遇到一个问题,PHP 正在死亡。我增加了内存,但 PHP 进程跳到 100%的 CPU 使用率,然后死亡,Apache 抛出 500 错误。

我试图让 Apache 记录一些东西,或者 PHP /MySQL 记录一个错误,但是除了一般的 500 错误之外没有其他记录。

500 个问题在列表页面上,例如:

/wp-admin/edit.php?post_type=artist

我们目前在 WordPress 中有超过 1200 个艺术家作品,如果我附加一个这样的日期类型:

/wp-admin/edit.php?post_type=artist&orderby=date

然后列表加载得很好,甚至连!我已经坐过并观看了 MySQL 查询日志,看来 WordPress 正在加载每一个帖子的元数据 (全部是 1200 个),以便生成 10 个列表。对于只有一个查询,它返回 92000 行。我使用高级自定义字段和具有自己的框架的模板,因此每个帖子都有一个相当大的元数据附加。我认为这是 PHP 处理的数据太多,我在这里打了个天花板。明年可能会有 1200 个职位容易翻倍。

如何加载初始页面加载附加日期排序或修复问题,加载所有的元数据?

最佳解决方案

尝试在您的 CPT 定义 (如果您的应用程序允许) 中更改层次结构:false 。

当 CPT 设置为层次结构时:真正的所有帖子将在管理控制面板中进行查询,这可能会导致内存问题。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。