调试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 mysql数据库操作类
Jun 04 PHP
PHP 采集程序 常用函数
Dec 18 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
thinkphp控制器调度使用示例
Feb 24 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
php获取QQ头像并显示的方法
Dec 23 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
PHP常见数组函数用法小结
Mar 21 PHP
Yii框架组件和事件行为管理详解
May 20 PHP
PHP数据库编程之MySQL优化策略概述
Aug 16 PHP
浅谈PHP7中的一些小技巧
May 29 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
BBS(php & mysql)完整版(三)
2006/10/09 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
微信API接口大全
2015/04/15 PHP
简单谈谈favicon
2015/06/10 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
Python脚本处理空格的方法
2016/08/08 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
python版DDOS攻击脚本
2019/06/12 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
银行出纳岗位职责
2013/11/25 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
工作简报范文
2015/07/21 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis