调试WordPress中定时任务的相关PHP脚本示例


Posted in PHP onDecember 10, 2015

一般人们使用WordPress的Cron API来实现定时任务,它的原理就是将创建的定时任务存储到数据库里,当有人访问的时候就去判断一下是否到时间需要执行这个定时任务,如果到时间则执行。

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

想在 WordPress 里创建一个定时任务一般用两个函数就行,其中之一是wp_schedule_event()

wp_schedule_event( $timestamp, $recurrence, $hook, $args );

使用这种方法的这样一个定时任务被开启,就会一直执行下去,除非手动把定时任务关闭掉。

当你开启一个定时任务之后,很难进行调试,因为定时任务并不是每次刷新网页都会执行。这种情况下,代码的错误和 Bug 很难被一下发现。

有一种方法,可以帮助你进行调试。这种方法就是访问 http://你的域名.com/wp-cron.php?doing_wp_cron,访问的时候所有的定时任务都会被执行一次,这样就可以很方便的调试了。

http://www.example.com/wp-cron.php?doing_wp_cron

关闭定时任务

如果你要禁用定时任务,可以在 wp-config.php 里添加下边的代码:

/**
  *WordPress 禁用定时任务
  *http://www.endskin.com/debug-cron/
*/
define( 'DISABLE_WP_CRON', true );

调整执行频率

很多人都说定时任务有一个非常讨厌的设计,那就是只能设置三种任务执行频率,分别是 hourly (每小时执行一次)、twicedaily (每天执行两次,也就是 12 小时执行一次)和 daily (24 小时执行一次),如果要其它的执行频率就没有办法。

那 WordPress 就真不支持自定义定时任务的执行频率吗?答案是否定的,WordPress 支持自定义定时任务的执行频率,但是比较麻烦,需要使用钩子修改。

下边的代码我添加了一个新的任务执行频率,叫做 weekly,执行频率为每周执行一次:

function Bing_add_schedules( $schedules ){
  $schedules['weekly'] = array(
    'interval' => 604800,//以秒为单位的执行频率
    'display' => __( '每周一次' )//显示在前端的名字
  );
  return $schedules;
}
add_filter( 'cron_schedules', 'Bing_add_schedules' );

之后这个创建的执行频率就可以在 wp_schedule_event() 函数上使用了:

wp_schedule_event( current_time( 'timestamp' ), 'weekly', 'test' );
总结:用 cron_schedules 钩子可以添加更多的执行频率,实现自定义定时任务执行频率的目的。

PHP 相关文章推荐
测试您的 PHP 水平的题目
May 30 PHP
深入php常用函数的使用汇总
Jun 08 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
8个PHP程序员常用的功能汇总
Dec 18 PHP
twig模板常用语句实例小结
Feb 04 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
thinkPHP多表查询及分页功能实现方法示例
Jul 03 PHP
php插入mysql数据返回id的方法
May 31 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 #PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 #PHP
php获取图片信息的方法详解
Dec 10 #PHP
在WordPress中使用wp-cron插件来设置定时任务
Dec 10 #PHP
php数组函数array_key_exists()小结
Dec 10 #PHP
php封装的连接Mysql类及用法分析
Dec 10 #PHP
PHP多维数组遍历方法(2种实现方法)
Dec 10 #PHP
You might like
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
php实现简单洗牌算法
2013/06/18 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
jQuery中实现text()的方法
2019/04/04 jQuery
vue 实现锚点功能操作
2020/08/10 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
怎样使用Python脚本日志功能
2016/08/14 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
Java平台和其他软件平台有什么不同
2015/06/05 面试题
附答案的Java面试题
2012/11/19 面试题
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
科技节口号
2014/06/19 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
优秀党员推荐材料
2014/12/18 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
感谢信
2019/04/11 职场文书
关于Vue中的options选项
2022/03/22 Vue.js
python中pycryto实现数据加密
2022/04/29 Python
如何利用python实现Simhash算法
2022/06/28 Python