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 相关文章推荐
用PHP4访问Oracle815
Oct 09 PHP
php扩展ZF――Validate扩展
Jan 10 PHP
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
php 获取文件行数的方法总结
Oct 11 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 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面象对象数据库操作类实例
2014/12/02 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
jcrop基本参数一览
2013/07/16 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
JS打印组合功能
2016/08/04 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
10分钟学会js处理json的常用方法
2020/12/06 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
Python3实现转换Image图片格式
2018/06/21 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
python 实现两个线程交替执行
2020/05/02 Python
Python request中文乱码问题解决方案
2020/09/17 Python
python绘制汉诺塔
2021/03/01 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
全神贯注教学反思
2014/02/03 职场文书
大专会计自我鉴定
2014/02/06 职场文书
献爱心倡议书
2014/04/14 职场文书
护士节策划方案
2014/05/19 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python
Python 如何实现文件自动去重
2021/06/02 Python
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android