2014-12-02 81 views
1

我有无限的,而PHP脚本,它必须全天候运行如何检测一个php文件仍然在apache上运行?

    在另一个PHP文件
  1. ,我怎么能检查是在服务器上运行或停止该文件?
  2. 我该如何发送信号给apache来停止并重新执行该文件?
+0

为什么你会像这样对apache执行一个永不停止的请求,而不是你的操作系统提供的任何服务抽象? – monocell 2014-12-02 07:45:28

回答

0

我打算给文件指定数字。全天候运行的文件将为the first file,并且将改变第一个文件的状态的文件将被称为the second file。 现在,第一个文件可以写入文件或数据库,比如说,每10分钟一次。通过这种方式,您可以通过检查该文件及其写入该文件的最后日期知道它是否正在运行。所以你创建第二个文件或数据库表,并在其中写入你想要第一个文件的状态。示例:活动或禁用。现在,您用第一个文件读取文件/表,如果它被禁用,则停止执行脚本。

0

最简单的可能是保存在内存缓存或其他共享位置时间戳的状态,并有其他PHP脚本检查状态时间戳

很容易杀死apache进程,并再次击中了网页,将重新启动脚本。或者您可以添加信号处理程序以在SIGHUP上重新启动

0

您无法检查特定文件是否正在运行。您必须检查进程是否仍在使用该文件运行。这也意味着这不是Apache可以为你做的事情。你要么必须:

1)使用依赖于操作系统的杀信号的过程中运行该脚本 2)检查一个kill信号从脚本

前者里面需要大量的服务器上的特权,所以第二个可能更容易。

最简单的方法是让正在运行的文件写入某个数据库或文件以表示它仍在进行,并读取信号的相同位置以便每隔一段时间停止一次。如果正在运行的进程看到一个停止信号,它可以简单地从任何循环中断开。

第二个脚本可以在任何点和任何原因下设置信号,另一个脚本在终止后会很快。

0

如果第一个脚本终止,请将文件写入名为error.txt的磁盘,然后让第二个脚本每分钟左右检查一次。

第二个脚本一旦发现error.txt文件将发出信号以重新启动您的第一个脚本。更实时的是使用数据库和当前的时间戳。

相关问题