【发布时间】:2009-11-02 14:33:34
【问题描述】:
在 Windows 服务器上,我们有一个偶尔运行的任务,使用“计划任务”来控制它。 (最好不要直接运行它,因为它可能需要以特定用户身份运行,并且计划任务配置具有所有适当的密码)。
我们想通过一个 PHP 脚本来控制它,以便网站的访问者可以请求运行该任务。 PHP可以触发定时任务吗?如果任务已经在运行,包括给出错误或不采取任何行动。
注意:锁定文件等可能不是有用的解决方案,因为任务可能在完成之前失败/崩溃
【问题讨论】:
在 Windows 服务器上,我们有一个偶尔运行的任务,使用“计划任务”来控制它。 (最好不要直接运行它,因为它可能需要以特定用户身份运行,并且计划任务配置具有所有适当的密码)。
我们想通过一个 PHP 脚本来控制它,以便网站的访问者可以请求运行该任务。 PHP可以触发定时任务吗?如果任务已经在运行,包括给出错误或不采取任何行动。
注意:锁定文件等可能不是有用的解决方案,因为任务可能在完成之前失败/崩溃
【问题讨论】:
一个简单的方法:让你的任务一直运行,但什么都不做,直到找到某个特定文件,然后删除它并执行它的工作(然后返回等待)。
您的 PHP(或其他)脚本只需创建该文件 ...
【讨论】:
while(true) 循环应该在某个地方有一个 Sleep 语句,以便在下次检查文件之前等待。
如果您可以控制 PHP 环境,那么您可以使用 shell_exec 和附加参数直接在 PHP 中执行外部应用程序。您还可以在相关任务中使用类似互斥锁的检查来防止多次执行。
【讨论】: