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执行速度全攻略(下)
Oct 09 PHP
如何跨站抓取别的站点的页面的补充
Oct 09 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
Dec 24 PHP
老生常谈PHP面向对象之标识映射
Jun 21 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP chr()函数讲解
2019/02/11 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
django之自定义软删除Model的方法
2019/08/14 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
Python解析多帧dicom数据详解
2020/01/13 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
EJB timer的种类
2014/10/28 面试题
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
工作时间上网检讨书
2014/02/03 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
师德承诺书2015
2015/04/28 职场文书
大学推普周活动总结
2015/05/07 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
常用的Python代码调试工具总结
2021/06/23 Python