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获取网站域名和地址的代码
Aug 17 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
php函数与传递参数实例分析
Nov 15 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
Jul 29 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
Jun 09 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 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 中执行系统外部命令
2006/10/09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
Python调用命令行进度条的方法
2015/05/05 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
linux面试题参考答案(7)
2014/07/24 面试题
初级Java程序员面试题
2016/03/03 面试题
大学军训自我鉴定
2013/12/15 职场文书
医学生职业规划范文
2014/01/05 职场文书
赔偿协议书
2015/01/27 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
转变工作作风心得体会
2016/01/23 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS