使用内存缓存优化 WordPress 定时作业功能

在 WordPress 中可以定义定时作业,指定定时去执行,那么这些定时作业是存在在哪里呢,怎么运行的呢?

WordPress 定时作业的存储过程

WordPress 的定时作业存储在 options 表里面,它使用的是 cron 这个 option;

那么定时作业在每次执行过程中,WordPress 使用方法 get_option('cron') 获取当前的定时作业配置,然后更新当前作业的下次执行时间和参数等通过 update_option('cron', $value) 写回 option 表;

这样每次定时作业的执行,都会对 option 进行写操作,如果系统的定时作业多的话,option 表会不停的被刷新,这样会影响系统的效率,我们可以把定时作业的配置存到内存里面,通过内存缓存去优化这个定时作业的执行过程;

使用内存缓存优化 WordPress 定时作业功能

首先判断内存中是否有定时作业的配置,如有则使用内存中的配置:

add_filter('pre_option_cron', function($pre){
	$value	= get_transient('wpjam_crons');
	return $value ?: $pre;
});

每次更新定时作业配置,都先写入内存。那么什么时候,将定时作业的配置写回数据库呢?

我们在内存中设置一个标记,这个标记存活期1小时,当他失效的时候,我们就将定时作业的配置写回数据库的 option 表,所以每小时都会将定时作业的配置写回数据库:

add_filter('pre_update_option_cron', function($value, $old_value){
	if($value === $old_value || maybe_serialize($value) === maybe_serialize($old_value)){
		return $value;
	}

set_transient('wpjam_crons', $value, HOUR_IN_SECONDS);

if(get_transient('wpjam_cron_mark') === false){
set_transient('wpjam_cron_mark', 1, HOUR_IN_SECONDS);
return $value;
}else{
return $old_value;
}
}, 10, 2);

WPJAM Basic 插件已经集成了 Memcached,下载 WPJAM Basic 之后,将 wpjam-basic/template/ 目录下的 object-cache.php 文件复制到 wp-content 目录下即可;




版权声明:
作者:云小叔-高级程序员
链接:http://liboven.cn/400.html
来源:微芯引擎 秒加载 快如闪电
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
使用内存缓存优化 WordPress 定时作业功能
在 WordPress 中可以定义定时作业,指定定时去执行,那么这些定时作业是存在在哪里呢,怎么运行的呢? WordPress 定时作业的存储过程 WordPress 的定时作业存……
<<上一篇
下一篇>>
文章目录
关闭
目 录