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 相关文章推荐
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
PHP二维数组的去重问题解析
Jul 17 PHP
php.ini 配置文件的深入解析
Jun 17 PHP
测试php函数的方法
Nov 13 PHP
PHP return语句的另一个作用
Jul 30 PHP
PHP中的替代语法介绍
Jan 09 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
php实现面包屑导航例子分享
Dec 19 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
Jun 13 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 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
神族 Protoss 历史背景
2020/03/14 星际争霸
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
php实现的生成排列算法示例
2019/07/25 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
详谈javascript异步编程
2016/02/21 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
ant design 日期格式化的实现
2020/10/27 Javascript
Python科学计算之Pandas详解
2017/01/15 Python
python构造IP报文实例
2020/05/05 Python
python 读取.nii格式图像实例
2020/07/01 Python
python如何爬取网页中的文字
2020/07/28 Python
django创建css文件夹的具体方法
2020/07/31 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
python request 模块详细介绍
2020/11/10 Python
学生爱国演讲稿
2014/01/14 职场文书
建议书标准格式
2014/03/12 职场文书
书法社团活动总结
2015/05/07 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏