我有一个PHP脚本,它以阻塞模式从管道中读取。
while($input = trim(fgets($pipe))) { do some stuff }
我希望能够在脚本等待管道输入时每隔几秒钟执行一次pcntl_signal_dispatch,而不会干扰排队的管道读取。
有什么建议吗?
据我所知,当脚本被阻塞时,您无法响应信号。您必须从管道中进行非阻塞读取,或者在一个进程中进行读取并在另一个进程发送信号(读取子进程并通过管道传递回父进程,让父进程响应信号)。如果你在孩子身上阅读并通过管道传给父母,那么你实际上可能不需要这些信号。
阅读这篇文章,它会更有意义(包含分步代码):
http://www.tuxradar.com/practicalphp/16/1/9
以及整个父页面:
http://www.tuxradar.com/practicalphp/16/0/0