ブロッキング モードでパイプから読み取る PHP スクリプトがあります。
while($input = trim(fgets($pipe))) { do some stuff }
スクリプトがパイプからの入力を待っている間、キューに入れられたパイプの読み取りを妨害することなく、pcntl_signal_dispatch を数秒ごとに実行できるようにしたいと考えています。
助言がありますか?
私の知る限り、スクリプトがブロックされているときはシグナルに応答できません。パイプからノンブロッキング読み取りを行うか、1 つのプロセス内で読み取りを行い、別のプロセスでシグナルをディスパッチする必要があります (子を読み取り、パイプを介して親に戻し、親にシグナルに応答させます)。子を読み込んでパイプ経由で親に戻していた場合、実際にはシグナルは必要ないかもしれません。
これを読むと、より理にかなっています(ステップバイステップのコードが含まれています):
http://www.tuxradar.com/practicalphp/16/1/9
...そして全体的な親ページ: