文章定时自动采集(WP-Cron可视化管理定时作业列表(_schedule))
优采云 发布时间: 2021-09-07 09:10文章定时自动采集(WP-Cron可视化管理定时作业列表(_schedule))
我们知道Linux服务器有一个Cron功能,可以用来设置定时运行,但不是每个人都熟悉Linux系统,也不是所有的主机管理面板都有Cron栏。
其实WordPress本身也有类似Cron的功能,可以让我们直接在WordPress中定义和执行定时作业。 WordPress 将此功能定义为:WP-Cron。比如WordPress本身的文章预发布功能就是基于WP-Cron实现的。
WP-Cron 功能是基于页面浏览的,所以时间不会很准确,但是随着网站流量的增加,准确度会越来越高。 WP-Cron 定义了一套完整的 API,允许第三方 WordPress 开发者通过插件定义定时作业。
可视化管理计时作业列表
为了便于管理定时作业,建议您先安装WPJAM Basic插件。它的定时作业管理功能让我们可以直观地管理 WordPress 的定时作业。首先,在后台显示系统中所有现有定时作业的列表:
在此界面中,您可以立即执行计划作业、删除它或直接添加计划作业。
定义定义作业
WP-Cron 支持两种类型的定义作业:
定义一个未来的事件
我们可以使用函数 wp_schedule_single_event($timestamp, $hook, $args) 来定义单个未来事件,它有三个参数:
定义重复事件
我们可以使用函数 wp_schedule_event($timestamp, $recurrence, $hook, $args) 来定义重复时间。
预定操作的频率
WordPress 内置了四种重复频率:
频率描述
每小时
每小时 1 次
每天两次
每天 2 次 - 每 12 小时一次
每天
一天 1 次 - 24 小时内 1 次
每周
每周 1 次
但是如果还不够的话,比如每15分钟一次,或者更频繁,每5分钟一次。 WP-Cron 还支持自定义事件频率类型。
检查 wp_get_schedules() 函数的源代码。频率内部由秒数定义,然后我们可以使用cron_schedule过滤器来自定义频率:
add_filter('cron_schedules', unction($schedules){
return array_merge($schedules, [
'five_minutes' => ['interval'=>300, 'display'=>'每5分钟一次'],
'fifteen_minutes' => ['interval'=>900, 'display'=>'每15分钟一次'],
]);
});
WPJAM Basic 设置了两个频率:每 15 分钟一次 (fiveteen_minutes) 和每 5 分钟一次 (five_minutes),您可以直接使用它们。
定时任务的钩子和回调函数
从上面可以看出,WordPress的定时任务对应一个hook,然后通过hook关联了一个具体的回调函数。比如我们要定义一个每天要执行的作业,我们把这个作业钩子定义为:wpjam_daily_function_hook,具体的回调函数是:wpjam_daily_function。
将回调函数关联到钩子:
add_action( 'wpjam_daily_function_hook', 'wpjam_daily_function');
给定时任务列表添加钩子有两种方式:
1.代码方法:
if(!wp_next_scheduled('wpjam_daily_function_hook')){
wp_schedule_event(time(), 'daily', 'wpjam_daily_function_hook');
}
在上面的代码中,首先使用函数wp_next_scheduled来检查wpjam_daily_function_hook是否已经被加入到调度的作业列表中。如果没有,我们使用 wp_schedule_event 函数添加它,这样可以确保作业只定义一次。
2.加入WPJAM Basic预定作业管理后台:
这里很容易理解,就不多说了,以后直接通过界面添加即可。不支持参数,即$args参数。
©我爱水煮鱼,本站推荐主机:阿里云。国外主机推荐使用 BlueHost。