调试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 相关文章推荐
如何实现给定日期的若干天以后的日期
Oct 09 PHP
《APMServ 5.1.2》使用图解
Oct 23 PHP
修改了一个很不错的php验证码(支持中文)
Feb 14 PHP
PHP 反向排序和随机排序代码
Jun 30 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
Jun 24 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
PHP中new static() 和 new self() 的区别介绍
Jan 09 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
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中文件上传的安全问题
2006/10/09 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
python根据日期返回星期几的方法
2015/07/06 Python
python实现飞机大战微信小游戏
2020/03/21 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
南威尔士家居商店:Leekes
2016/10/25 全球购物
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
安全大检查实施方案
2014/02/22 职场文书
三严三实对照检查材料
2014/09/22 职场文书
商家认证委托书格式
2014/10/16 职场文书
自荐信模板大全
2015/03/27 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android