sem_get
(PHP 4, PHP 5, PHP 7)
sem_get — セマフォ ID を得る
説明
sem_get
( int $key
[, int $max_acquire
= 1
[, int $permissions
= 0666
[, bool $auto_release
= true
]]] ) : SysvSemaphore|false
sem_get() は、 System V セマフォを指定したキーでアクセスするために使用可能な ID を返します。
同じキーで sem_get() を 2 度コールした場合、 別のセマフォ ID が返されます。 しかし、どちらの ID も同じそのセマフォをアクセスします。
key
に 0
を指定すると、
sem_get() が呼び出される度に新しい非公開のセマフォが作られます。
パラメータ
key
max_acquire
- 同時にセマフォを得ることが可能なプロセス数を
max_acquire
にセットします。 permissions
- セマフォのパーミッション。 実際には、この値はプロセスが現在そのセマフォに付随している 唯一のプロセスであることがわかった場合にのみセットされます。
auto_release
- リクエストの終了時に自動的にセマフォを開放するかどうかを指定します。
返り値
成功した場合に正のセマフォ ID、エラー時には false
を返します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | 成功した時、
この関数は SysvSemaphore クラスのインスタンスを返すようになりました。 期待するようになりました。 これより前のバージョンでは、リソースが返されていました。 |
8.0.0 | auto_release の型が
int から bool に変更されました |
注意
警告
PHP 以外のところで作られたセマフォに sem_get() でアクセスするときには、
3 つのセマフォのセットとして作ったものでなければいけないことに注意しましょう
(たとえば、C の semget()
関数で作るなら、nsems
に 3 を指定します)。
そうしないと、PHP からそのセマフォにアクセスできなくなります。