如果CMD应用程序停止工作,则强制重新启动/警告它

时间:2013-12-24 08:44:33

标签: php cmd scheduled-tasks windows-server

这个问题与PHP没有直接关系。情况是,我有一个计划的PHP CLI任务,每2分钟后运行一次(报告生成器)。有时,Windows遇到CLI停止工作的错误。当它停止时,在我们按下对话框上的“关闭”按钮之前,它不会执行新任务。

无论如何它可以“关闭”或任务可以自动重启吗? 或者即使它可以触发一些电子邮件警报,也可以通知管理员。

由于

2 个答案:

答案 0 :(得分:0)

我在Windows上的cli应用程序遇到了同样的问题。无法找到解决方案以防止崩溃,最终我创建了一个每30分钟运行一次的批处理脚本并杀死所有php进程,这迫使我的循环重新启动。

以下是我的.bat文件的示例

:loop
taskkill /f /im php.exe
taskkill /f /im php.exe
taskkill /f /im php.exe
@ping 127.0.0.1 -n 1800 -w 1000 > nul
goto loop

代码中的ping是我让脚本睡眠的方式。还值得一提的是,调用我的php的脚本也是一个bat文件,因此在上面运行时它没有被杀死。 Hense重新启动循环。

这就是我的意思:

:loop
c:\php\php.exe D:\somedir\somescript.php
goto loop

所以第一个是重启循环,以防应用程序崩溃。第二个是实际使PHP脚本首先运行的原因

希望这有帮助。

答案 1 :(得分:0)

我有解决这个问题的方法。

首先创建一个.bat文件:

php -q -f script.php

另存为batch.bat

然后使用这些设置使用Windows调度程序创建新任务:

常规  1.运行用户是否登录  2.以最高权限运行  3.列出项目

<强>触发器

  1. 开始任务:创建/修改任务
  2. 每次重复任务:无限期1分钟
  3. 启用
  4. 操作

    • 浏览并选择batch.bat

    设置

    1. 允许任务按需运行
    2. 尽快运行任务
    3. 如果任务失败,请重新启动:1分钟
    4. 不要启动新实例
    5. 单击“确定”并键入Administrator

      的密码