11

我有一个脚本可以监听 jabber 服务器并做出相应的响应。虽然它不应该停止,但昨晚它确实停止了。现在我想每分钟运行一个 cron 作业来检查脚本是否正在运行,如果没有则启动它。

问题是,如何检查特定脚本是否仍在运行?

这里已经发布了一些解决方案,但这些都是针对 Linux 的,而我正在寻找 Windows 解决方案。请问有什么想法吗?谢谢。

4

3 回答 3

4

一个快速而肮脏的解决方法可能是让脚本更新数据库中日期列设置为 CURRENT_TIMESTAMP 的行。让 cron 第二个脚本检查该行的时间戳是否是最近的。

于 2010-04-14T01:59:21.177 回答
0

这是我通常做的:

  1. 创建状态目录,例如:/data/status/
  2. 在我的脚本上,让它检查状态文件是否存在
    1. 如果确实存在,则退出脚本
    2. 如果不存在,则继续该过程

但是,这里有一个问题:如果脚本死了并且没有删除状态文件怎么办?

您可以像这样添加一些保存检查:

  1. 每分钟,更新状态文件
  2. 对于每次 cron 启动,检查状态文件是否最后更新,例如:10 或 30 分钟前(我们可以假设我们的 cron 脚本已死)我们可以启动 cron 脚本。
于 2010-04-14T02:00:23.483 回答
0

我有同样的问题,我用这段代码解决了:

file_put_contents("status.txt","ping");

我把它放在我的脚本循环中

所以,我检查文件的最后修改日期以查看脚本是否处于活动状态

为了不使 HD 过载,您可以执行以下操作:

$i++
if( $i%100 == 0)
    file_put_contents("status.txt","ping");

这将在 $i == 100 或 200 或 300 等时写入文件...

这是一种解决方法

于 2010-04-14T02:28:36.687 回答