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