ここ数年、PHP でシグナルを使う機会が多かったので、気づいた点などを整理してみます。 本当のシグナルハンドラと PHP のシグナルハンドラ pcntl_signal() で登録する PHP のシグナルハンドラは、本当の意味でのシグナルハンドラではありません。なので、シグナルハンドラから非同期シグナルで安全では無い関数でも呼び出すことが出来ます。 <?php declare (ticks = 1); pcntl_signal(SIGTERM, function ($signo) { printf("%d -> %s\n", $signo, "だが断る"); }); posix_kill(posix_getpid(), SIGTERM); exit(0); 本当のシグナルハンドラは次の箇所で定義されており、所謂リンクドリストに受信したシグナル番号を記録しています。 pcntl.c:1216
マカーです。 2回に分けてPHPによるUNIXデーモンの作成方法について説明します。 PHPは他のLightweight Languageに比べてWeb開発言語という印象が強いですが、PHPでもデーモンを作ることもできます。 デーモンってなんだ? メモリに常駐しバックグラウンドで様々なサービスを提供するプログラムです。 PHPで作ると何がうれしい? C言語ではなくPHPで開発する事で、開発期間を短縮することが出来ます。 デーモンを開発する上で押さえるべきポイント デーモンを開発する上で押さえるべきポイントは以下の通りです。 どんな言語を使う場合であっても共通です。 セッションを現在のプロセスから独立させる。 デーモンはバックグラウンドで動作する為、制御端末から切り離します。 setsidにより行いますが、setsidは親プロセスで呼ぶと失敗するため、 forkで子プロセス生成し、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く