调试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编程最快明白》第八讲:php启发和小结
Nov 01 PHP
PHP验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
PHP学习之正则表达式
Apr 17 PHP
PHP中如何调用webservice的实例参考
Apr 25 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
php使用文本统计访问量的方法
May 12 PHP
Laravel手动分页实现方法详解
Oct 09 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
Aug 04 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
PHP Trait功能与用法实例分析
Jun 03 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
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
Open and Print a Word Document
2007/06/15 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
Angular 向组件传递模板的两种方法
2018/02/23 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
高中自我评价分享
2013/12/05 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
国家助学金受助感言
2015/08/01 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书