gpt4 book ai didi

在WordPress中使用wp-cron插件来设置定时任务

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章在WordPress中使用wp-cron插件来设置定时任务由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

PHP 本身是无法创建定时任务的,但是 WordPress 自带了一个伪定时任务(Cron) API,非常的方便好用,包括 WordPress 本身的定时发布文章都依赖于这个 API 。

WP Cron 是什么? 是 WordPress 一套定时触发机制, 可以循环安排任务执行. 如: 定时发布新文章, 定期检测版本等功能都是通过这个来实现的. 。

WP Cron 可以为我们实现什么? 我们可以循环更新和提交网站数据, 节日定期向读者发送贺卡或者表单 ... 。

它的原理就是将创建的定时任务存储到数据库里,当有人访问的时候就去判断一下是否到时间需要执行这个定时任务,如果到时间则执行.

因为这种原理,所以执行的时间可能会有一些偏差,但随着网站的浏览量攀升和网络爬虫的不断访问,会让定时任务执行的时间越来越准确.

WP-Cron 效率不高, 但还是很方便好用的, 整理了一下相关函数的使用方法如下. 。

函数 。

wp_get_schedule 。

通过勾子别名, 获取预定安排的勾子. 成功时返回循环周期类别 (hourly, twicedaily, daily, ...), 失败时返回 false. 。

?
1
<?php wp_get_schedule( $hook , $args ) ?>

$hook: 勾子别名 $args: 勾子对应函数的参数数组 (可选) 。

wp_get_schedules 。

WordPress 默认支持的循环周期类别有 hourly, twicedaily 和 daily. 通过该函数我们可以获取所有这些循环周期数组. 。

?
1
<?php wp_get_schedules() ?>

在默认情况下, 由以上方法获得的数组对象如下. 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
array (
  'hourly' => array (
  'interval' => 3600,
  'display' => 'Once Hourly'
  ),
  'twicedaily' => array (
  'interval' => 43200,
  'display' => 'Twice Daily'
  ),
  'daily' => array (
  'interval' => 86400,
  'display' => 'Once Daily'
  )
)

我们可以向 cron_schedules 过滤器添加更多的类型. 添加例子如下

?
1
2
3
4
5
6
7
8
9
10
11
add_filter( 'cron_schedules' , 'cron_add_weekly' );
function cron_add_weekly( $schedules )
{
  // Adds once weekly to the existing schedules.
  $schedules [ 'weekly' ] = array (
  'interval' => 604800, // 1周 = 60秒 * 60分钟 * 24小时 * 7天
  'display' => __( 'Once Weekly' )
  );
  return $schedules ;
}
wp_next_scheduled

通过勾子别名, 获取预定安排的下一个运行时刻, 以整型返回. 常用于判断是否已经做了预定安排. 。

?
1
<?php $timestamp = wp_next_scheduled( $hook , $args ); ?>

$hook: 勾子别名 $args: 勾子对应函数的参数数组 (可选) 。

wp_schedule_event 。

按周期循环预定安排一个 WordPress 勾子, 在预定时间触发勾子对应的函数. 。

?
1
<?php wp_schedule_event( $timestamp , $recurrence , $hook , $args ); ?>

$timestamp: 时间 (整型) $recurrence: 循环周期类别 (hourly, twicedaily, daily, ...) $hook: 勾子别名 $args: 勾子对应函数的参数数组 (可选) 。

wp_reschedule_event 。

按周期循环重新预定安排一个 WordPress 勾子. 但我发现这个方法不能正常使用, Codex 写得很草, 如果哪位清楚知道怎么使用, 请告知一下. 。

wp_unschedule_event 。

通过预定时间和勾子别名, 取消预定的安排. 。

<?php wp_unschedule_event($timestamp, $hook, $args ); ?> $timestamp: 时间 (整型) $hook: 勾子别名 $args: 勾子对应函数的参数数组 (可选) 。

wp_clear_scheduled_hook 。

通过勾子别名, 移除预定安排的勾子. 。

<?php wp_clear_scheduled_hook( $hook ); ?> $hook: 勾子别名 。

wp_schedule_single_event 。

预定安排一个 WordPress 勾子, 在预定时间触发勾子对应的函数. 与 wp_schedule_event 不同的是该方法的只安排一次触发, 不存在循环预定. 。

?
1
<?php wp_schedule_single_event( $timestamp , $hook ); ?>

$timestamp: 时间 (整型) $args: 勾子对应函数的参数数组 (可选) 。

从上面的函数可用的参数来看,我们就可以整理出以下几个常用的参数:

参数 。

$timestamp 。

(整数)(必须)第一次执行此定时任务的时间,需要传一个时间戳,一般情况下都是当场执行,但不能用 time() 函数,而是用 WordPress 的时间函数 current_time().

默认值:None 。

$recurrence 。

(字符串)(必须)执行频率。每隔多长时间执行一次。可以填写 hourly (每小时执行一次)、twicedaily (每天执行两次,也就是 12 小时执行一次)和 daily (24 小时执行一次).

默认值:None 。

$hook 。

(字符串)(必须)执行的钩子。在执行定时任务的时候会调用这个钩子,往这个钩子挂在函数即可实现定时执行函数。 默认值:None 。

$args 。

(数组)(可选)传递的参数,会被传递到挂载到定时钩子的函数里的参数.

默认值:None 。

返回值 。

(布尔 | null)如果添加成功则返回 null,不成功则返回 False 。

例子 。

?
1
if ( !wp_next_scheduled( 'test' ) ) wp_schedule_event( current_time( 'timestamp' ), 'twicedaily' , 'test' );

首先使用 wp_next_scheduled() 函数判断是否已经创建,如果没创建则创建一个定时任务.

把需要执行的代码挂载到 test 钩子上就行了.

最后此篇关于在WordPress中使用wp-cron插件来设置定时任务的文章就讲到这里了,如果你想了解更多关于在WordPress中使用wp-cron插件来设置定时任务的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com