PHP マニュアル
前のページ |  | 次のページ

# LXXXVIII. プロセス制御関数

# 導入

PHPがサポートするプロセス制御関数は、UNIX形式のプロセス生成、プロ セス実行、シグナル処理、プロセス終了機能を実装しています。 プロセス制御は、Webサーバ環境で有効にするべきではなく、プロセス制 御関数のどれかがWebサーバ環境で使用された場合には、予期しない結果 を生じる可能性があります。

この文書は、プロセス制御関数の一般的な使用法を説明しようとするもの です。UNIXのプロセス制御に関する詳細な情報については、fork(2), waitpid(2) and signal(2)のようなシステムのドキュメントや、 [Advanced Programming in the UNIX Environment by W. Richard Stevens (Addison-Wesley)]のような優れた参考書 を読まれることを推奨します。

> 注意: この拡張モジュールはWindows環境 では利用できません。

# 要件

これらの関数は、標準モジュールの一部として利用可能であり、常に使用できます。

# インストール手順

PHPがサポートするプロセス制御機能は、デフォルトでは有効となってい ません。プロセス制御機能を有効にするには、PHPをコンパイルする際に configure のオプションに --enable-pcntl を付ける必要があります。

> 注意: 現在、このモジュールは非UNIX環境(Windows)では動作しません。

# 実行用の設定

この拡張モジュールは設定ディレクティブを全く定義しません。

# リソース型

この拡張モジュールはリソース型を全く定義しません。

# 定義済みの定数

以下のシグナルのリストは、プロセス制御関数でサポートされているもの です。これらのシグナルのデフォルト動作の詳細については、 signal(7) のマニュアルを参照下さい。

`WNOHANG` (integer)

`WUNTRACED` (integer)

`SIG_IGN` (integer)

`SIG_DFL` (integer)

`SIG_ERR` (integer)

`SIGHUP` (integer)

`SIGINT` (integer)

`SIGQUIT` (integer)

`SIGILL` (integer)

`SIGTRAP` (integer)

`SIGABRT` (integer)

`SIGIOT` (integer)

`SIGBUS` (integer)

`SIGFPE` (integer)

`SIGKILL` (integer)

`SIGUSR1` (integer)

`SIGSEGV` (integer)

`SIGUSR2` (integer)

`SIGPIPE` (integer)

`SIGALRM` (integer)

`SIGTERM` (integer)

`SIGSTKFLT` (integer)

`SIGCLD` (integer)

`SIGCHLD` (integer)

`SIGCONT` (integer)

`SIGSTOP` (integer)

`SIGTSTP` (integer)

`SIGTTIN` (integer)

`SIGTTOU` (integer)

`SIGURG` (integer)

`SIGXCPU` (integer)

`SIGXFSZ` (integer)

`SIGVTALRM` (integer)

`SIGPROF` (integer)

`SIGWINCH` (integer)

`SIGPOLL` (integer)

`SIGIO` (integer)

`SIGPWR` (integer)

`SIGSYS` (integer)

`SIGBABY` (integer)

# 例

この例は、シグナルハンドラを有するデーモンプロセスをフォークオフ します。

例 1. プロセス制御の例
`<?php $pid = pcntl_fork(); if ($pid == -1) { die("could not fork"); } else if ($pid) { exit(); // 親プロセスの場合 } else { // 子プロセスの場合 } // 制御側の端末からデタッチ if (!posix_setsid()) { die("could not detach from terminal"); } // シグナルハンドラを設定 pcntl_signal(SIGTERM, "sig_handler"); pcntl_signal(SIGHUP, "sig_handler"); // 無限ループでタスク実行 while(1) { // 何か面白いことをここで行う } function sig_handler($signo) { switch($signo) { case SIGTERM: // 終了タスクを処理 exit; break; case SIGHUP: // 再起動タスクを処理 break; default: // その他の全てのシグナルを処理 } } ?>`

# 以下も参照下さい:

POSIX関数の節を参照することも有 用でしょう。

前のページ | ホーム | 次のページ
pg_version | 上に戻る | pcntl_alarm