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利用COM对象访问SQLServer、Access
Oct 09 PHP
收集的php编写大型网站问题集
Mar 06 PHP
优化PHP代码的53条建议
Mar 27 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
PHP 引用是个坏习惯
Mar 12 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
php 判断服务器操作系统的类型
Feb 17 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 PHP
php获取一个变量的名字的方法
Sep 05 PHP
WHOOPS PHP调试库的使用
Sep 29 PHP
php 读写json文件及修改json的方法
Mar 07 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中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
会计岗位职责
2013/11/08 职场文书
超市重阳节活动方案
2014/02/10 职场文书
党员教师一句话承诺
2014/05/30 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
配置nginx 重定向到系统维护页面
2021/06/08 Servers