调试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 相关文章推荐
支持数组的ADDSLASHES的php函数
Feb 16 PHP
简单的PHP多图上传小程序代码
Jul 17 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 PHP
php过滤XSS攻击的函数
Nov 12 PHP
MongoDB在PHP中的常用操作小结
Feb 20 PHP
php无限遍历目录示例
Feb 21 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
PHP开发框架laravel安装与配置教程
Mar 13 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 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开发框架myqee新手快速入门教程
2014/07/14 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
python mysqldb连接数据库
2009/03/16 Python
Python中使用不同编码读写txt文件详解
2015/05/28 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
如何判断计算机可能已经中马
2013/03/22 面试题
运动会邀请函范文
2014/02/06 职场文书
员工2014年度工作总结
2014/12/09 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python