我有一个用PHP编写的守护进程,它在我的linux机器上运行。
我正在尝试通过另一个php文件向它发送信号。 为此我正在尝试posix_kill功能。但它不起作用。
当我运行php页面时,我收到错误,即没有--enable-grep
编译php我想知道如何启用它?或者向守护进程发送信号的替代方法是什么?
答案 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)
尝试使用共享内存,锁或文件。如果进程属于不同的用户,则在进程之间发送信号可能不起作用。
例如,如果您需要扩展,使用文件或锁可以帮助您,因为它比使用信号更容易复制。
像我所说的信令问题是守护进程必须定期查看事件......通过使用信号,守护进程中的某个触发器会立即被调用,如果需要快速响应,这会使生活更轻松