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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
PHP4实际应用经验篇(8)
Oct 09 PHP
几种显示数据的方法的比较
Oct 09 PHP
php str_pad 函数使用详解
Jan 13 PHP
支持数组的ADDSLASHES的php函数
Feb 16 PHP
php中用数组的方法设置cookies
Apr 21 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
解决出现SoapFault (looks like we got no XML document)的问题
Jun 24 PHP
laravel框架数据库配置及操作数据库示例
Oct 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
php导出CSV抽象类实例
2014/09/24 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
关于this和self的使用说明
2010/08/01 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
保密承诺书范文
2014/03/27 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
出国留学英文自荐信
2015/03/25 职场文书
结婚典礼主持词
2015/06/29 职场文书
一年级语文教学随笔
2015/08/14 职场文书
门面租赁合同范文
2019/08/06 职场文书
七年级上册生物的课件
2019/08/07 职场文书