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.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
PHP数组函数知识汇总
May 12 PHP
微信公众平台开发教程②微信端分享功能图文详解
Apr 10 PHP
php用wangeditor3实现图片上传功能
Aug 22 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 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数字游戏 计算24算法
2012/06/10 PHP
PHP循环结构实例讲解
2014/02/10 PHP
php支付宝接口用法分析
2015/01/04 PHP
PHP实现递归无限级分类
2015/10/22 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
可输入的下拉框
2006/06/19 Javascript
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
es6函数之尾递归用法实例分析
2020/04/25 Javascript
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
利用python实现AR教程
2019/11/20 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
酒吧创业计划书
2014/01/18 职场文书
年终考核评语
2014/01/19 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
公司老总年会致辞
2015/07/30 职场文书
Nginx 匹配方式
2022/05/15 Servers