PHP在windows系统中定时任务的实现

背景说明:

服务器使用Apache,PHP的运行模式是使用php5apache2.dll模块化的方式,环境中没有php.exe程序来解释PHP文件。

据了解PHP不像JAVA一样,有定时任务在服务器启动的时候去自动运行,但是可以在浏览器运行php文件,问题是只希望该文件在服务器运行,以下三种方案是参考一些资料摸索到的:

方案一:浏览器执行php文件

PHP文件代码如下:

<?php

/**

* $Id: timer.php 2014-11-25 10:27 CharlieChen $

*/

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.

set_time_limit(0);//程序无限制的执行下去

$interval=5;// 每隔5秒钟运行

do{

//此处做你想做的事情

//include 'timer/timerService.php';

sleep($interval);

}while(true);

?>

执行方法:把该文件放在url能访问的目录,如http://localhost/timer.php回车执行一下,即可关闭浏览器或转到系统其他地址;

此方法在apache每次重启后需要手动访问一次即可。所以缺陷也在于此。

方案二:BAT执行php程序

PHP代码同方案一,BAT(taskPlane.bat)代码如下:

@echo off

cls

::判断Apache服务器是否启动

for /f "skip=3 tokens=4" %%i in ('sc query Apache) do set "zt=%%i" &goto :next

:next

if /i "%zt%"=="RUNNING" (goto 1)

if /i "%zt%"=="STOPPED" (goto 2)

:1

::隐藏CMD窗口运行

if "%1" == "h" goto begin

mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit

:begin

cd..

set rootDir=%cd%

cd..

::是Apcahe的bin目录,应包含Apache.exe文件

cd bin

set taskFile=timer.php

if exist "%rootDir%\%taskFile%" (goto exephp) else (echo err)

:exephp

echo %date:~0,10% %time:~0,8% Apache正常运行,推送待办中...

echo 请保留此窗口或最小化运行

php -q "%rootDir%\%taskFile%"

exit

:2

echo %date:~0,10% %time:~0,8% Apache未运行

pause

该脚本首先判断Apache服务是否启动,如果不希望看到CMD的窗口,后台运行,使用代码:

if "%1" == "h" goto begin

mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit

::隐藏CMD窗口运行

:begin

::此处代码会被执行

在代码执行处执行php的命令,执行指定路径的php文件。

方案三:BAT执行PHP程序 + Windows计划任务

此时PHP代码只需写需要做的事情,不需要循环执行,把定时执行任务交给Windows如下:

<?php

/**

* $Id: timerService.php 2014-11-26 10:27 CharlieChen $

*/

$basedir = dirname(__FILE__);

$fp = fopen($basedir."/test.txt", "a");

$flag=fwrite($fp,date("Y-m-d H:i:s")."\r\n");

if(!$flag)

{

echo "写入文件失败";

break;

}

fclose($fp);

?>

BAT程序如上文,只是php文件要指定到timerService.php文件

WIN7系统打开“控制面板”-->“管理工具”-->“任务计划程序”-->”创建任务“

1.在“常规“选项卡填写一个名称,配置win7环境隐藏运行

2.在“触发器“选项卡新建触发器,如下我新建一个每隔5分钟就执行一次的计划

3.在“操作“选项卡新建操作,指向BAT程序

此方法把定时交给操作系统来做,php只需执行想做的事就行。

windows下使用PHP实现定时执行脚本 一直以来,使用PHP定时运行脚本都是让大家头痛的问题,但是我们确实可以利用windows的计划任务来定时调用PHP脚本,当然这还要感谢PHP.exe。下面,站长将向大家介绍,如何来实现。 目标:根据系统时间定时执行PHP脚本,不需要人工运行(这里以定时新建一个文本文件并写入内容为例) 解决步骤: 1、建立PHP脚本,如下: 大家,可以看见,我们在这里对将要创建的文件路径使用了绝对路径,这是因为我们将要通过windows命令行来调用此脚本,由于cmd.exe与我们的web根目录是不一样的,而php的文件目录函数只能在web根目录范围内进行操作,所以我们需要使用绝对路径,否则代码将正确执行但是文件将不会被创建。 2、新建.bat文件,代码如下: "D:\Program Files (x86)\Web\PHP\php.exe" -f "D:\Program Files (x86)\Web\www\root\go.php" 保存,并命名为run.bat。 注意,如果你的PHP目录或web根目录含有空格,你需要使用引号将整个路径引用起来,否则将运行错误。站长的目录含有空格,因此使用了引号。创建属于你自己的bat文件时,请根据自身情况决定是否要使用引号和文件的目录。 3、添加windows计划任务 从控制面板打开计划任务(这里主要针对win7用户进行说明),点击“创建基本任务”,填写名称和描述,然后点击“下一步”,选择任务执行的频率,很好理解,然后点击“下一步”,设置任务的执行时间,然后点击“下一步”,选择“启动程序”,点击“下一步”,点击浏览按钮选择我们建立的“run.bat”文件,点击”下一步“,点击”完成“。 4、运行 根据你设置的时间,系统定时自动运行,如果你等不及也可以手动执行。在”计划任务“间栏下方的任务名查找你刚才新建的任务,鼠标双击该任务,单击右边的运行按钮,系统会弹出一个cmd对话框然后关闭,这说明你的脚本已经正确执行了,到创建文件的目录去检查文件是否创建。 好了,在windows下使用PHP实现计划任务就介绍到这里了,希望对大家有帮助。 (责任编辑:麦田守望者)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值