调试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实现文件安全下载
Oct 09 PHP
PHP新手上路(七)
Oct 09 PHP
推荐php模板技术[转]
Jan 04 PHP
PHP 函数语法介绍一
Jun 14 PHP
php在页面中调用fckeditor编辑器的方法
Jun 10 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
Sep 07 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
php使用PDO方法详解
Dec 27 PHP
php实现计数器方法小结
Jan 05 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 PHP
PHP基于ip2long实现IP转换整形
Dec 11 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
php你的验证码安全码?
2007/01/02 PHP
php+mysql写的简单留言本实例代码
2008/07/25 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
python读取word文档的方法
2015/05/09 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
django和flask哪个值得研究学习
2020/07/31 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
某公司部分笔试题
2013/11/05 面试题
应届毕业生的自我鉴定
2013/11/13 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
英语求职信范文
2014/05/23 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
环卫处个人工作总结
2015/03/04 职场文书
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python