【问题标题】:Force restarting / alert CMD application if it stops working如果 CMD 应用程序停止工作,则强制重启/警告它
【发布时间】:2014-01-12 12:08:14
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 也许您可以使用 AutoIt 每隔一段时间按一次键盘上的回车键。如果正在等待 OK,则焦点窗口应该关闭。

标签: php cmd scheduled-tasks windows-server


【解决方案1】:

我在 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 脚本首先运行的原因

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

    首先创建一个.bat文件:

    php -q -f script.php
    

    另存为batch.bat

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

    一般: 1.运行用户是否登录 2.以最高权限运行 3. 列表项

    触发器

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

    操作

    • 浏览并选择batch.bat

    设置

    1. 允许按需运行任务
    2. 尽快运行任务
    3. 如果任务失败,每隔 1 分钟重新启动一次
    4. 不要启动新实例

    点击确定并输入管理员密码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      相关资源
      最近更新 更多