Forum und email

セマフォ・共有メモリおよび IPC 関数(semaphore)

導入

このモジュールは、System V IPC 関連の関数へのラッパーを提供します。 セマフォ・共有メモリおよびプロセス間通信(IPC)がその中に含まれます。

セマフォは、マシーン上のリソースへの排他的アクセス機能や、 同時にあるリソースを使用することができるプロセスの数を制限するために 使用することができます。

このモジュールは、System V 共有メモリを使用した共有メモリ関数も 提供します。共有メモリは、グローバル変数へのアクセス手段を提供するために 使用することが可能です。別の httpd デーモンおよび (Perl, C, ... のような)他のプログラムさえ、グローバルデータ交換を 提供するこのデータにアクセスすることが可能です。 共有メモリは、同時アクセスに関して安全ではないということを覚えておいて ください。 同期をとるには、セマフォを使用してください。

Unix OS による共有メモリの制限
SHMMAX 共有メモリの最大サイズ。通常は 131072 バイト
SHMMIN 共有メモリの最小サイズ。通常は 1 バイト
SHMMNI 共有メモリセグメントの最大数。通常は 100
SHMSEG プロセス毎の共有メモリの最大数。通常は 6

メッセージング関数は、他のプロセスと相互にメッセージを送受信する ために使用することができます。 これにより簡単で効率的なプロセス間のデータ交換が可能であり、 Unix ドメインソケットを用いる場合のような設定は不要です。

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

要件

外部ライブラリを必要としません。

インストール手順

この関数はデフォルトでは有効になってはいません。System V セマフォの サポートを有効にするには、オプション --enable-sysvsem を指定して PHP を コンパイルする必要があります。System V 共有メモリのサポートを有効にするには、 オプション --enable-sysvshm を 指定して PHP をコンパイルする必要があります。System V メッセージを有効に するには、オプション --enable-sysvmsg を指定して PHP をコンパイル します。

実行時設定

php.ini の設定により動作が変化します。

セマフォ設定オプション
名前 デフォルト 変更の可否 変更履歴
sysvmsg.value "42" PHP_INI_ALL  
sysvmsg.string "foobar" PHP_INI_ALL  
PHP_INI_* 定数の詳細および定義については php.ini ディレクティブ を参照してください。

リソース型

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

System V メッセージ定数
定数 変更履歴
MSG_IPC_NOWAIT integer  
MSG_EAGAIN integer 5.2.0 以降
MSG_ENOMSG integer 5.2.0 以降
MSG_NOERROR integer  
MSG_EXCEPT integer  

目次

  • ftok — パス名とプロジェクト ID を、System V IPC キーに変換する
  • msg_get_queue — メッセージキューを作成またはそれにアタッチする
  • msg_receive — メッセージキューからメッセージを受信する
  • msg_remove_queue — メッセージキューを破棄する
  • msg_send — メッセージキューにメッセージを送信する
  • msg_set_queue — メッセージキューデータ構造体の情報を設定する
  • msg_stat_queue — メッセージキューデータ構造体の情報を返す
  • sem_acquire — セマフォを得る
  • sem_get — セマフォ ID を得る
  • sem_release — セマフォを解放する
  • sem_remove — セマフォを削除する
  • shm_attach — 共有メモリセグメントを作成またはオープンする
  • shm_detach — 共有メモリセグメントへの接続を閉じる
  • shm_get_var — 共有メモリから変数を返す
  • shm_put_var — 共有メモリの変数を挿入または更新する
  • shm_remove_var — 共有メモリから変数を削除する
  • shm_remove — Unix システムから共有メモリを削除する