在php中向守护进程发送信号

时间:2010-04-12 14:07:17

标签: php daemon

我有一个用PHP编写的守护进程,它在我的linux机器上运行。

我正在尝试通过另一个php文件向它发送信号。 为此我正在尝试posix_kill功能。但它不起作用。

当我运行php页面时,我收到错误,即没有--enable-grep

编译php

我想知道如何启用它?或者向守护进程发送信号的替代方法是什么?

3 个答案:

答案 0 :(得分:1)

处理PHP脚本信号的唯一方法是使用PCNTL库重新编译PHP,它将为您提供所需的工具/功能。

http://php.net/manual/en/book.pcntl.php

否则,您需要使用Quamis mentioned之类的解决方法:文件标志或锁等。

答案 1 :(得分:0)

如果您知道进程的ID,则可以

exec( "kill -SIGKILL 1234", $return );
print_r( $return );

或者,如果您不知道进程ID

exec( "pkill -KILL myDaemon", $r );
print_r( $return );

要查找all the available signals,您可以发送:

shell> kill -l

如果遇到问题,请将stderr重定向到标准输出:

exec( "pkill -KILL myDaemon 2>&1", $r );
print_r( $return );

这将显示终端上会出现的任何错误消息(如果你一直在执行命令!)。

答案 2 :(得分:0)

尝试使用共享内存,锁或文件。如果进程属于不同的用户,则在进程之间发送信号可能不起作用。

例如,如果您需要扩展,使用文件或锁可以帮助您,因为它比使用信号更容易复制。

像我所说的信令问题是守护进程必须定期查看事件......通过使用信号,守护进程中的某个触发器会立即被调用,如果需要快速响应,这会使生活更轻松