PHP定时执行任务的3种方法详解


Posted in PHP onDecember 21, 2015

PHP定时执行的三种方式实现

  • 1、windows 的计划任务
  • 2、linux的脚本程序
  • 3、让web浏览器定时刷新

具体实现
1、windows计划任务

PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本。
2、linux 的脚本实现
这里主要使用到crontab这个命令,
使用方式 :

crontab   filecrontab [ -u user ] [ -u user ] { -l | -r | -e }

说明 :

crontab是用来让使用者在固定时间或固定间隔执行程式之用

使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性

3、PHP实现定时执行计划任务
使用php让浏览器刷新需要解决几个问题
PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
PHP定时执行的代码:

<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=5;// 每隔5s运行
 
//方法1--死循环
do{
  echo '测试'.time().'<br/>'; 
  sleep($interval);// 等待5s  
}while(true);
 
//方法2---sleep 定时执行
  require_once './curlClass.php';//引入文件
   
  $curl = new httpCurl();//实例化
  $stime = $curl->getmicrotime();
  for($i=0;$i<=10;$i++){
     
    echo '测试'.time().'<br/>'; 
    sleep($interval);// 等待5s
     
  }
  ob_flush();
  flush();
  $etime = $curl->getmicrotime();
  echo '<hr>';
  echo round(($etime-stime),4);//程序执行时间

测试的时候发现这个效率并不是很高。

PHP定时执行任务的3种方法详解

总结:

个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧。

以上就是PHP定时执行任务的3种方法,对于前一篇文章结尾中提到的crontab这个命令,也进行了简单介绍,希望大家能够有所收获。

PHP 相关文章推荐
也谈 PHP 和 MYSQL
Oct 09 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
Jun 25 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
PHP可变变量学习小结
Nov 29 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
Dec 19 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
PHP实现简易计算器功能
Aug 28 PHP
PHP连接MySQL数据库三种实现方法
Dec 10 PHP
详解PHP实现执行定时任务
Dec 21 #PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 #PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 #PHP
PHP版本常用的排序算法汇总
Dec 20 #PHP
php封装好的人民币数值转中文大写类
Dec 20 #PHP
使用PHP如何实现高效安全的ftp服务器(一)
Dec 20 #PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 #PHP
You might like
PHP array操作10个小技巧分享
2011/06/23 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
Javascript 中的类和闭包
2010/01/08 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
windows下python之mysqldb模块安装方法
2017/09/07 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
Python多继承原理与用法示例
2018/08/23 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
python中常用的数据结构介绍
2021/01/12 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
外科实习自我鉴定
2013/10/06 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
春游踏青活动方案
2014/08/14 职场文书
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis