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 分页分组类
Dec 10 PHP
php学习之流程控制实现代码
Jun 09 PHP
php中判断数组是一维,二维,还是多维的解决方法
May 04 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
php中删除、清空session的方式总结
Oct 09 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
phpinfo的知识点总结
Oct 10 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 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
晶体管来复再生式二管收音机
2021/03/02 无线电
smarty简单入门实例
2014/11/28 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
python自动化报告的输出用例详解
2018/05/30 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
世界上最好的足球商店:Unisport
2019/03/02 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
焊接专业毕业生求职信
2013/10/01 职场文书
外国人聘用意向书
2014/04/01 职场文书
应用外语系自荐信
2014/06/26 职场文书
会议接待欢迎标语
2014/10/08 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
工程部部长岗位职责
2015/02/12 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery