PHP Socket Programming Handbook 読書メモ シグナル

php_socket_programming_handbook


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を実行するとシグナル受信確認が行われる

コメントを残す

コメントを残す