- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
嗨,我想运行一个 cron 作业来在我的服务器上调用 PHP 脚本。 我正在使用 Cpanel 从我的网络主机,这些是选项: 分钟: 小时: 日: 月份: 工作日: 命令: 我真的很难将命令指向我的文
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
有没有办法配置supervisor每 X 秒运行一些命令(如 CRON)? 我看到了 eventlistener 和 TICK_ 事件的例子 [eventlistener:memmon] comman
如果 Cron 有一项作业计划在凌晨 2 点运行,另一项作业在凌晨 3 点运行,那么这些作业会受到夏令时的影响吗? 当时间向后移动一小时时,时间是否会直接从凌晨 2:59:59 变为凌晨 2:00:0
第一个示例 假设我有一份 CRON 工作 30 2 * * * .... 然后每次晚上 2:30(本地时间)都会运行。 现在假设我的时区是欧洲/德国,并且是 2017 年 10 月 29 日(夏令时
我想在不到一分钟的时间内(例如每 30 秒)在主机上运行一个命令,但我无权访问 ssh。我只有 .我不知道如何使用它进行一些黑客攻击以在不到一分钟的时间内运行代码。 EDIT1:在这个问题中,我的访问
我探索并发现在 quartz cron 表达式中: sec min hour day_of_month month day_of_week year, 我们可以提供 day_of_month 或 da
我试图弄清楚是否可以设置一个 cron 作业,将所有文件从我的服务器上的一个文件夹传输到另一个文件夹,然后从另一个文件夹中获取一组文件(随机选择的文件)并将其放入原来的文件夹中。如果有关于如何执行此操
我服务器上的一个驱动器最近损坏了操作系统。我能够恢复所有文件,但现在我有一个只有文件系统的备份驱动器;不可启动。我现在正在设置一个新服务器,并且需要设置旧的 cron 作业。有没有办法查看文件结构以查
我尝试了 http://docs.opscode.com/resource_cron.html#examples 给出的最简单的例子 cron "name_of_cron_entry" do
我注意到很多人在讨论 Gearman,它的调度功能使它能够将工作分配到其他服务器上。但是,我还没有看到与本地 cronjobs 的比较。 cron 和 Gearman 有什么区别? 最佳答案 如果您正
我需要在此运行一份工作 cron日程安排,但似乎我无法在一份声明中表达这一点。有没有办法在一个 cron 中得到这个陈述? 周一至周六上午 8 点 下午 2 点 谢谢。 最佳答案 你是对的。恐怕这是不
我正在尝试在 OVH 网络主机上设置 cron。 要执行的脚本位于: /home/[登录ftp]/www/script.sh 因此,我使用此设置在 OVH 界面上创建了一个 cron: 要执行的命令:
这是cron我试过的表达 0 0 0 */14 * ?它给出了以下时间表 开始时间:- Friday, September 8, 2017 1:25 AM 下一个预定:- 1. Friday, Se
你如何从命令行创建一个 cron 作业,以便它在 gnome-schedule 中显示一个名称? 我知道如何使用 crontab 创建一个 cron 作业。但是,我所有的工作都以空白名称显示。我想更好
我有一个由 cron 安排的工作:每小时从服务器弹出电子邮件。 但有时我不想等待 60 分钟来查看我的电子邮件。为此,我使用了一个脚本,该脚本运行与 crontab 中相同的命令。它本质上就像在计划运
我想要一个每 2 小时 10 分钟运行一次的计划的 cron 表达式,我期望的输出是2:004:106:20我试过 0 0/2 0/2 * * ?为此,输出是这样的2012 年 11 月 1 日星期四
我有一个执行 shell 脚本的 cronjob在我的 shell 脚本中我做了一个模块加载 tww/perl 但它给了我 module: command not found 我能做什么?我至少有 1
在 Jenkins 中,我们将 Poll SCM 计划设置为 * * * * * .但 Jenkins 建议 Do you really mean "every minute" when you sa
在 logrotate 联机帮助页中,他们说: “通常,logrotate 作为日常 cron 作业运行”。 这是否意味着 logrotate 使用 cron(或由 cron 执行)? 如果是这样,这
我是一名优秀的程序员,十分优秀!