OSは以下のようなシグナルを実行中のプログラムに送る
SIGINT
: プログラムを強制終了するSIGQUIT
: プログラムの終了(SIGINT
よりも穏やかな方法)SIGCHLD
: 子プロセスが終了した際に親プロセスに送られるSIGHUP
: プロセスを制御しているターミナルが終了した際に送られ、設定ファイルの再読込に使われることが多いSIGTTIN
,SIGTTOU
: バックグラウンドでTTYから読み込もうとしているプロセスに送られる
PHPでは、pcntl_signalを使ってシグナルの制御を行える
<?php
pcntl_signal(SIGINT, function () {
echo 'Received SIGINT. Cleaning up and terminationg' . PHP_EOL;
exit;
});
echo 'Waiting for signals...' . PHP_EOL;
for (;;) {
pcntl_signal_dispatch();
usleep(100);
}
- pcntl_signalでシグナル受信時のコールバックを登録する
- pcntl_dispatchを実行するとシグナル受信確認が行われる