调试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利用COM对象访问SQLServer、Access
Oct 09 PHP
用PHP调用数据库的存贮过程!
Oct 09 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
让PHP显示Facebook的粉丝数量方法
Jan 08 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
Aug 03 PHP
laravel 自定义常量的两种方案
Oct 14 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 SFTP实现上传下载功能
2017/07/26 PHP
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
深入探究node之Transform
2017/07/20 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
jupyter安装小结
2016/03/13 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
Python自动创建Excel并获取内容
2020/09/16 Python
详解python中的异常和文件读写
2021/01/03 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
售后服务科岗位职责范文
2013/11/13 职场文书
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
网上书店创业计划书
2014/01/12 职场文书
自考生自我评价分享
2014/01/18 职场文书
ktv中秋节活动方案
2014/01/30 职场文书
前台岗位职责范本
2015/04/16 职场文书
八月一日观后感
2015/06/10 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
javascript实现计算器功能详解流程
2021/11/01 Javascript
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers