`
Charlie_1989
  • 浏览: 13259 次
文章分类
社区版块
存档分类
最新评论

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只需执行想做的事就行。

分享到:
评论

相关推荐

    2.FastAdmin在Windows下定时任务的使用.zip

    在Windows环境下,实现FastAdmin的定时任务是一项常见的需求,主要用于执行一些周期性的工作,如数据备份、清理缓存、发送邮件等。下面将详细介绍如何在Windows下设置FastAdmin的定时任务。 首先,我们需要一个可...

    taskPHP基于php开发的定时计划任务框架,多进程实现任务的分配和运行

    这意味着开发者可以在多种环境下部署和运行定时任务,增强了框架的适应性和普适性。 ### 4. 任务调度 `taskPHP`提供了灵活的任务调度机制,可以按照预定的时间间隔或特定的触发条件来安排任务。这使得开发者可以...

    windows下使用PHP实现定时执行脚本

    在”计划任务“中间栏下方的任务名中查找你刚才新建的任务,鼠标双击该任务,单击右边的运行按钮,系统会弹出一个cmd对话框然后关闭,这说明你的脚本已经正确执行了,到创建文件的目录去检查文件是否创建。...

    thinkphp 5.1 定时任务,Crontab 计划任务-think-cron.zip

    1. 为了提高效率,尽量避免在Cron任务中执行复杂的数据库操作,可以考虑使用消息队列分担压力。 2. 使用环境变量存储敏感信息,如数据库密码,以增强安全性。 3. 定期检查和清理旧的Crontab任务,避免无用任务占用...

    python定时任务 每天运行一次.md

    在 Python 中可以使用 schedule 模块来实现定时任务。以下是一个每天运行一次的例子: import schedule import time def job(): print("I'm running at 5:00am every day.") # 设定定时任务 schedule.every()....

    windows系统 PHP定时任务方案.zip

    软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...

    php定时任务框架使用案例源码.zip

    在PHP中实现定时任务,通常有两种方式:一种是通过PHP的Cron Job(Linux系统的计划任务)配合CLI(命令行接口)来执行;另一种是使用PHP的内置功能或者第三方库来创建定时任务。在Linux环境中,Cron Job是最常见的...

    用于window下定时执行php任务的小软件

    - **PHP的Cron模拟库**:PHP社区也有一些库,如`php-cron-scheduler`或`cron-expression`,可以帮助在PHP代码内部实现类似CRON的定时任务调度。 总的来说,"用于window下定时执行php任务的小软件"提供了一个便捷的...

    taskPHP--基于php开发的定时计划任务框架.zip

    taskPHP基于php开发的定时计划任务框架,利用多进程实现任务的分配和运行,利用内存共享实现进程间通信,支持多线程模式需要安装pthreads扩展(可选),支持linux和windows。有较好的伸缩性、扩展性、健壮稳定性而被多家...

    详解PHP执行定时任务的实现思路

    然后,需要在Windows的任务计划程序中设置定时任务,选择之前创建的`cron.bat`文件,并设置执行的时间以及触发条件。设置完成后,批处理文件会在预定时间执行,进而调用PHP脚本。 在没有服务器管理员权限,比如租用...

    基于PHP的EasyTask定时任务框架源码.zip

    EasyTask框架就是为此目的设计的,它简化了在PHP环境中创建和调度定时任务的过程。 【描述】"基于PHP的EasyTask定时任务框架源码.zip" 提供了完整的源代码,这表明我们可以深入理解其内部工作原理,并可以根据项目...

    http-crontab:Workerman + ThinkPHP6 实现后台可视化定时任务管理

    Workerman + TP6 实现可视化定时任务 概述 Workerman + Thinkphp6 实现可视化秒级定时任务。兼容 Windows 和 Linux 系统。 其实就可视化页面部分本项目采用 TP 框架 + Layui 实现 ,当然也可以用其他方式,比如,纯 ...

    基于PHP的多进程定时任务框架设计源码

    taskPHP是一个基于PHP的多进程定时任务框架,采用多进程技术实现任务的高效分配和执行。该项目支持多进程和多线程模式,推荐安装pthreads扩展以获得更佳性能,同时兼容Linux和Windows操作系统。项目包含39个文件,...

    PHP定时执行任务方法.txt 自动维护

    在Windows环境下,我们可以通过创建批处理文件(`.bat`)并结合系统自带的任务计划程序来实现定时任务。 ##### 步骤一:创建批处理文件 1. **编写批处理文件**: ```bash D:\xampp\...

    windows下定时利用bat脚本实现ftp上传下载

    如果需要在定时任务中执行 PHP 脚本,可以在“操作”选项卡中选择“启动程序”,然后浏览并选择 PHP 解释器程序,同时设置适当的参数来调用你的 PHP 脚本。 通过上述步骤,不仅可以实现 Windows 系统下的定时 FTP ...

    PHP 多任务秒级定时器的实现方法

    在实现过程中,特别关注了定时器的性能表现。使用 `usleep(1000)` 来代替 `sleep(1)` 可以提高定时的精确度,避免因进程挂起时间较长而造成的定时偏差。此外,利用 `SplMinHeap` 的高效插入和删除操作可以确保即使在...

    PHP指令行执行整合pathinfo模拟定时任务实例_.docx

    总的来说,这段代码提供了一个在PHP CLI环境中模拟Web服务器路由和定时任务执行的解决方案,这对于在没有直接操作系统访问权限或者希望在单一PHP环境中实现定时任务的情况非常有用。通过这种方式,开发者可以灵活地...

    PHP定时执行任务的3种方法详解

    在PHP开发中,有时我们需要...在实际应用中,由于Linux的Cron服务具有更高的稳定性和可控性,通常被首选用于定时任务的执行。而通过Web浏览器实现的定时任务则更多地应用于测试或临时需求,而非长期稳定的后台任务。

    基于Workerman+MySQL的接口化秒级定时任务管理.zip

    本文将深入探讨一个基于Workerman和MySQL实现的接口化秒级定时任务管理系统,该系统能够灵活地在Windows和Linux环境中运行,提供高效、稳定的定时任务调度。 Workerman是一个纯PHP开发的开源高性能的PHP socket...

Global site tag (gtag.js) - Google Analytics