本文目录一览:
- 1、php定时执行任务的几个方法
- 2、PHP后台任务运行
- 3、如何在Win7下添加任务计划执行php脚本文件
- 4、Windows中使用计划任务自动执行PHP程序实例
- 5、php定时执行任务怎么写?
- 6、如何实现php定时执行任务,且时间是可配置的
php定时执行任务的几个方法
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定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧。
PHP后台任务运行
在运行前 先要了解一下 什么是文件描述符。
什么是文件描述符?
文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket。
最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应。
"21 file"和 " file 21"区别?
1.php test.php 21 file :错误输出到终端,标准输出被重定向到文件file。
2.php test.php file 21 :标准输出被重定向到文件file,然后错误输出也重定向到和标准输出一样,所以错误也输出到文件file。
nohup命令可以在用户退出终端后仍然执行程序,
“21 /dev/null”表示不显示标准输出和错误输出,
最后的表示推到后台执行。
如何在Win7下添加任务计划执行php脚本文件
方法/步骤
1
这里先说说winxp下的任务计划设置步骤:
(1).开始;
(2).控制面板;
(3).任务计划;
(4).添加任务计划;
(5).浏览等操作。
2、在win7下,首先点击开始;
3、点击:管理工具;
4、点击:任务计划程序;
5、点击:创建任务;
6、输入任务名称和描述;
7、鼠标点击,操作选项卡;
8、点击:新建;
9、点击浏览,并选择要执行的脚本文件(比如这里演示的是
testPHP.bat内容如下图:
10、php内容如下图:
11、最后点击确定按钮。
12、定时任务成功执行。
Windows中使用计划任务自动执行PHP程序实例
所谓任务计划就是由计算机自动调用用户事先设置好的应用程序,从而达到简化用户操作的目的。利用Windows
2000的任务计划程序(相当与*NIX下的cron程序,这里不再对其详述),我们可以安排任何脚本、程序或文档在最恰当的时候运行,从而满足自己的需要。下面以Windows
2000为例。
具体来说,我们若需利用任务计划程序自动运行则应执行如下步骤:
单击"开始"按钮,然后依次选择"程序"→"附件"→"系统工具"→"任务计划"(或者是"设置"→"控制面板"→"任务计划"),启动Windows
2000的任务计划管理程序。
在"任务计划"窗口中双击"添加任务计划"图标,启动系统的"任务计划向导",然后单击"下一步"按钮,在给出的程序列表中选择需要自动运行的应用程序,然后单击"下一步"按钮。
设置适当的任务计划名称并选择自动执行这个任务的时间频率(如每天、每星期、每月、一次性、每次启动计算机时、每次登录时等),然后单击"下一步"按钮。
此时系统将会要求用户对程序运行的具体时间进行设置,如几号、几点钟、哪几个时间段才能运行等,我们只需根据自己的需要加以设置即可。
接下来系统将会要求用户设置适当的用户名及密码(如图5所示),以便系统今后能自动加以运行。
最后,我们只需单击"完成"按钮即可将相应任务添加到Windows
2000的任务计划程序中,此后它就会自动"记住"这个任务,一旦系统时间及相关条件与用户设置的计划相符,它就会自动调用用户所指定的应用程序,十分方
便(每次启动Windows
2000的时候,任务计划程序都会自动启动,并在后台运行,确保用户的计划能够按时执行)。
现在我们来测试一下刚才所建的任务是否成功,鼠标右键单击"php"程序图标(如图6所示),在弹出的菜单里面选择"运行"。一般情况下程序图标只要这样
激活运行就可以正常启动。如果运行失败可查看用户和密码是否设置正确,还有确定"Task
Scheduler"服务是否已启动,本人当初就是为了节省系统资源把它关掉了导致运行失败,害我找了大半天。另外也可从"系统日志"里查看到底是什么原
因造成运行失败的。
好了,讲了这么多任务计划的应用,现在我们切入正题,下面将介绍两个例子:
一、让PHP定时运行
编辑如下代码,并保存为test.php:
复制代码
代码如下:
?php
$fp
=
@fopen("test.txt",
"a+");
fwrite($fp,
date("Y-m-d
H:i:s")
.
"
让PHP定时运行吧!\n");
fclose($fp);
?
php定时执行任务怎么写?
借助crontab来编写;
编写定时执行脚本(单独的一个php文件,或者某个方法);
配置crontab,指定执行路径地址;
启动crontab服务即可。
如何实现php定时执行任务,且时间是可配置的
linux下可以 crontab执行如(crontab -e编辑,crontab -l查看)0 1 * * * php test.php #每天01:00执行一次test.php*/5 * * * * php test.php #每5分钟执行一次test.phpphp自身实现:可sleep实现
?php
function func()
{
//实现要做的事
}
while(true)
{
sleep($n);//$n为秒数
func();
}
?