使用操作系统计划任务触发,正确设置 WordPress 定时计划任务(cron job)
小本本的WordPress开发经验分享
经常使用WordPress进行开发的伙伴们可能知道,WordPress有一套自己的定时计划任务系统,主要用来执行定时发布文章,定时检查WordPress内核、主题、插件更新等任务。标准的Linux计划任务(Cronjob)只要指定好了时间,只要操作系统开机,不管用户是否在使用计算机,计划任务就会在指定的时间自动执行。而WordPress的计划任务有点不一样,设置WordPress定时任务的时候,WordPress会先把计划任务的信息写入数据库,当下一次用户访问网站的时候,WordPress计划任务系统会检查一下当前时间点之前是否有需要执行的任务,如果有,就执行任务。
WordPress定时任务计划系统的问题
基于这个原理,我们很容易发现问题,WordPress的计划任务到了指定的时间点,并非一定会执行;就算计划任务执行了,执行的时间也不一定是指定的时间。如果我们定义了一个每小时执行的任务,而在最近一个小时之内,没有人访问我们的站点,计划任务就不会被执行。如果我们的站点用户访问量非常大,一般不会遇到这个问题。但是如果我们开发的是一个插件,需要每小时、每天、每周、每月或任何一个时间段定期执行任务,使用WordPress任务计划系统就不是一个好主意了。也就是说,WordPress计划任务系统并不是一个非常可靠的系统。如果我们需要计划任务严格按照指定的时间执行,用WordPress的计划任务系统实现肯定是不行的。
使用操作系统的计划任务触发WordPress的计划任务
我们知道,操作系统的计划任务,只要设置好了,到了时间就会自动执行,没有其他的附加条件。所以要解决这个问题,我们需要设置一个操作系统级别的任务计划,模拟用户定时访问站点。为了避免操作系统的任务计划和WordPress的任务计划器冲突,造成重复执行的问题,我们先禁用WordPress的任务计划系统,然后使用 wp_schedule_event
安排我们的任务计划操作。
1.禁用WPCron定时任务系统
在wp-config.php中,添加下面的定义代码:
define('DISABLE_WP_CRON',true);
2.添加事项操作
首先,定义一个每小时指定的动作,指定一个需要执行的函数名称,在下面的例子中,就是update_db_hourly。
add_action('my_hourly_event','update_db_hourly');
3.添加定时任务函数
现在,定义update_db_hourly函数使用WordPress调度事项。如果是在插件中,我们可以在插件激活时,调度任务,(同时,不要忘了在插件禁用时移除调度):
public static function activate(){
wp_schedule_event(time(),'hourly','my_hourly_event');
}
public static function deactivate(){
wp_clear_scheduled_hook('my_hourly_event');
}
最后,定义执行实际的操作函数,也就是第一步指定的update_db_hourly。
public function update_db_hourly(){
// 1.检查是否有文件
// 2.如果有、导入,然后删除
// 3.如果没有,不执行任何操作
}
4.设置计划任务
基于cPanel或其他面板的主机一般都有自定义计划任务的界面,我们可以通过Web界面非常方便的设置计划任务,有些服务器没有在图形界面,只能通过访问命令行,通过命令来设置计划任务。Linux系统可以通过 crontab -e
来编辑计划任务,加入以下指令到计划任务文件、然后保存即可。
*/15****wget -q -O http://yourdomain.com/wp-cron.php?doing_wp_cron
或者使用curl也可以达到同样的目的。
*/15****curl --silent "https://www.mashshare.net/wp-cron.php?doing_wp_cron">/dev/null 2>&1
上面的设置将每15分钟执行一次,向WordPress站点发出请求,从而启动我们设置好的计划任务。
设置计划任务并不是一个非常复杂的过程,但是除非您熟悉WordPress定时任务系统的工作原理,使用的时候就会遇到我们上面提到的问题。希望本文能够帮助你了解WordPress是如何处理计划任务的,并在需要的时候正确设置WordPress的任务计划。除了常见的定时操作,我们还可以在WordPress计划任务系统的基础上实现异步PHP和定时任务队列,有需要的朋友可以点击链接了解详情。

-
个人网站选择WordPress还是Typecho? 2023-05-28 23:33:13
-
盘点2023年最好用的三款wordpress知识库主题 2023-05-28 23:20:26
-
wordpress建外贸B2C独立站的五大优势 2023-05-28 23:05:49
-
盘点2023年依然好用的3款wordpress文档主题 2023-05-28 23:02:19
-
盘点2023年依然好用的3款wordpress外贸网站主题 2023-05-28 22:59:41
-
盘点2023年依然好用的3款wordpress轻社区主题 2023-05-28 22:57:54
-
盘点2023年依然好用的3款wordpress电商主题 2023-05-28 22:56:05
-
wordpress后台地址是多少(附:后台地址修改教程) 2023-05-28 22:54:15
-
盘点2023年依然好用的3款wordpress笔记主题 2023-05-28 22:51:13
-
开源wordpress主题:kratos 介绍 2023-05-28 22:47:46