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 相关文章推荐
杏林同学录(三)
Oct 09 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
php中get_headers函数的作用及用法的详细介绍
Apr 27 PHP
php防注入及开发安全详细解析
Aug 09 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
Laravel日志用法详解
Oct 09 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
PHP 多任务秒级定时器的实现方法
May 13 PHP
解决laravel查询构造器中的别名问题
Oct 17 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 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代码优化及php相关问题总结
2006/10/09 PHP
PHP版网站缓存加快打开速度的方法分享
2012/06/03 PHP
php使用codebase生成随机数
2014/03/25 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
python避免死锁方法实例分析
2015/06/04 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
Python流程控制常用工具详解
2020/02/24 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
python实现图片素描效果
2020/09/26 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
焊接专业毕业生求职信
2013/10/01 职场文书
给实习单位的感谢信
2014/02/01 职场文书
创新比赛获奖感言
2014/02/13 职场文书
项目合作意向书范本
2014/04/01 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers