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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(3)
Oct 09 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
Nov 26 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
php统计文章排行示例
Mar 04 PHP
laravel安装和配置教程
Oct 29 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
thinkphp3.2.2实现生成多张缩略图的方法
Dec 19 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
May 21 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
PHP递归的三种常用方式
Feb 28 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
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
Javascript 二维数组
2009/11/26 Javascript
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
JS实现合并json对象的方法
2017/10/10 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
老生常谈进程线程协程那些事儿
2017/07/24 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
Python实现疫情地图可视化
2021/02/05 Python
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
酒店销售经理岗位职责
2014/01/31 职场文书
超市总经理岗位职责
2014/02/02 职场文书
2014年教学工作总结
2014/11/13 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
Python实战之实现简易的学生选课系统
2021/05/25 Python
mysql主从复制的实现步骤
2021/10/24 MySQL
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python