文章定时自动采集(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。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线