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 字符串编码截取函数(兼容utf-8和gb2312)
May 02 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
学习php中的正则表达式
Aug 17 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
PHP文件上传类实例详解
Apr 08 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 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
一个PHP的String类代码
2010/04/20 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
php实现的RSS生成类实例
2015/04/23 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
Prototype Class对象学习
2009/07/19 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python多进程分块读取超大文件的方法
2016/04/13 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
python turtle 绘制太极图的实例
2019/12/18 Python
python之语音识别speech模块
2020/09/09 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python