调试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远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
php 模拟get_headers函数的代码示例
Apr 27 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
php代码审计比较有意思的例子
May 07 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
PHP数组函数知识汇总
May 12 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 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实现下载功能的代码
2012/09/29 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
window.ActiveXObject使用说明
2010/11/08 Javascript
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
Python中交换两个元素的实现方法
2018/06/29 Python
Python跳出多重循环的方法示例
2019/07/03 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
Python socket 套接字实现通信详解
2019/08/27 Python
Python绘制热力图示例
2019/09/27 Python
pytorch中index_select()的用法详解
2021/01/06 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
十二生肖观后感
2015/06/12 职场文书
Golang中异常处理机制详解
2021/06/08 Golang