如何避免cli模式下wordpress内存耗尽

更新于 2021年10月16日 精品教程

背景

在有些场景下,会写一些脚本在cli模式下跑,比如刷数据之类的任务。

问题以及原因

在一个一直循环跑的任务中,使用wp的数据库或者一些常见的操作都有可能导致内存耗尽,最终脚本被退出。

其原因在于wordpress的wpdb类会保存query,每一条query都会保存在内存中,随着查询越来越多,这个变量得不到释放,于是内存最终会被耗尽。

另外一个原因在于wordpress的object cache,这也会将查询的结果保存在内存!

解决办法

// 不保存查询
define('SAVEQUERIES', false);
// 不缓存数据
wp_suspend_cache_addition(true);

你可能还喜欢下面这些文章

如何设置PHP执行内存如何设置PHP执行内存

如何设置PHP内存大小要设置PHP内存大小,可以使用以下两种方法:方法一、修改php.ini文件在php.ini文件中,可以找到“memory_limit”设置项,将其值设置为所需的内存大小即可。

wordpress filter parse_term_query修改分类的查询参数wordpress filter parse_term_query修改分类的查询参数

parse_term_query过滤器用于修改分类的查询参数,所有分类的查询(包括后台)都会用到它,因此可以修改它来自定义我们的分类查询。wordpress后台的二级分类太多,展示太乱!

更好的许多小ajax请求还是一个大的全局站点性能?更好的许多小ajax请求还是一个大的全局站点性能?

老实说,我看不到使用线程或不使用线程之间的实际速度增加,可能是因为 AJAX 调用的异步性质允许在调用开始和完成之间进行处理,或者可能是因为我没有做了足够多的工作可以看到很大的不同,但是线程版本允许我的页面加载器在加载数据时不会冻结,所以我想

站点地图插件(wpsitemap)是怎么做到支持百万文章定时任务刷新的站点地图插件(wpsitemap)是怎么做到支持百万文章定时任务刷新的

定时任务每次只会执行全部任务的一小部分,最终就可以自动更新所有的站点地图。比如我们生成的地图中有100页,分别是post-1,post-2,post-3。,那么每次定时任务会依次生成post-1,post-2,post-3。