PHP がサポートするプロセス制御関数は、Unix 形式のプロセス生成、 プロセス実行、シグナル処理、プロセス終了機能を実装しています。 プロセス制御は Web サーバ環境で有効にするべきではなく、プロセス 制御関数のどれかが Web サーバ環境で使用された場合には、予期しない結果を 生じる可能性があります。
この文書は、プロセス制御関数の一般的な使用法を説明しようとするものです。 Unix のプロセス制御に関する詳細な情報については、fork(2), waitpid(2) および signal(2) のようなシステムのドキュメントや、 W. Richard Stevens による Advanced Programming in the UNIX Environment (Addison-Wesley) のような優れた参考書を読まれることを推奨します。
現在 PCNTL はシグナルハンドルコールバックの仕組みとして ticks を 使用しており、これは以前の仕組みよりずっと高速です。この変更は "user ticks" を使用するのと同じことです。declare() を使用して、プログラム中でコールバックの発生を許可する場所を指定する 必要があります。これにより、非同期のイベントを処理する際の オーバーヘッドを最小限に抑えることが可能となります。以前は、pcntl を 有効にして PHP をコンパイルすると、pcntl の使用の有無にかかわらず 常にこのオーバーヘッドの被害を被っていたのです。
PHP 4.3.0 より前のバージョンで pcntl を使用していたすべてのスクリプトに ついて、1 点だけ修正する必要があります。それは、コールバックを許可 したい場所に declare() を使用するか、あるいは declare() の新しいグローバル書式を使用して スクリプト全体で ticks を有効にすることです。
注意: この拡張モジュールは Windows 環境では利用できません。
外部ライブラリを必要としません。
PHPがサポートするプロセス制御機能は、デフォルトでは有効となってい
ません。プロセス制御機能を有効にするには、
configure のオプションに
--enable-pcntl
を付け、CGI 版あるいは CLI 版の PHP をコンパイルする必要があります。
注意: 現在、このモジュールは非 Unix 環境(Windows)では動作しません。
設定ディレクティブは定義されていません。
リソース型は定義されていません。
以下のシグナルのリストがプロセス制御関数でサポートされています。 これらのシグナルのデフォルト動作の詳細については、 signal(7) のマニュアルを参照ください。
この例は、シグナルハンドラを有するデーモンプロセスをフォークします。