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 相关文章推荐
php生成略缩图代码
Jul 16 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
PHP常用正则表达式集锦
Aug 17 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
thinkphp循环结构用法实例
Nov 24 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
vmware linux系统安装最新的php7图解
Apr 14 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 PHP
PHP实现简单注册登录系统
Dec 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学习之整理字符串
2011/04/17 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
PHP积分兑换接口实例
2015/02/09 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
python操作excel让工作自动化
2019/08/09 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
党委班子对照检查材料
2014/08/19 职场文书
小学教育见习报告
2014/10/31 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书