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分页函数
Oct 09 PHP
php项目打包方法
Feb 18 PHP
php split汉字
Jun 05 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
php中使用websocket详解
Sep 23 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
浅谈PHP各环境下的伪静态配置
Mar 13 PHP
laravel框架 api自定义全局异常处理方法
Oct 11 PHP
php的单例模式及应用场景详解
Feb 27 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/04 咖啡文化
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
Angular弹出模态框的两种方式
2017/10/19 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
python使用多线程不断刷新网页的方法
2015/03/31 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
防火标语大全
2014/10/06 职场文书
员工自我评价范文
2015/03/11 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android