PHP定时执行计划任务的多种方法小结


Posted in PHP onDecember 19, 2011

PHP定时执行的三种方式实现
1、windows 的计划任务
2、linux的脚本程序
3、让web浏览器定时刷新

具体实现

windows计划任务

PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本,具体可以参考:https://3water.com/article/29134.htm

linux 的脚本实现
这里主要使用到crontab这个命令,

使用方式 :

crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程式之用

使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性

可以参看:https://3water.com/article/29136.htm

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定时执行计划任务的多种方法小结 
总结:
个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧,比较那才是王道。
ps:那个死循环的方法好像是恶意攻击网站经常使用的方法

PHP 相关文章推荐
第三节--定义一个类
Nov 16 PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
PHP的异常处理类Exception的使用及说明
Jun 13 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
php在数组中查找指定值的方法
Mar 17 PHP
PHP数组操作类实例
Jul 11 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
功能强大的php文件上传类
Aug 29 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 #PHP
php安全配置 如何配置使其更安全
Dec 16 #PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 #PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 #PHP
通达OA公共代码 php常用检测函数
Dec 14 #PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 #PHP
php中日期加减法运算实现代码
Dec 08 #PHP
You might like
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
PHP文件与目录操作示例
2016/12/24 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
基于node.js的快速开发透明代理
2010/12/25 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python DataFrame 修改列的顺序实例
2018/04/10 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
中文系学生自荐信范文
2013/11/13 职场文书
如何写你的创业计划书
2014/01/07 职场文书
数控个人求职信范文
2014/02/03 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
Oracle锁表解决方法的详细记录
2022/06/05 Oracle