セマフォ ID を得る

# sem_get

(PHP 4, PHP 5, PHP 7, PHP 8)

sem_get — セマフォ ID を得る

### 説明

function 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 からそのセマフォにアクセスできなくなります。

### 参考

- sem_acquire() - セマフォを得る
- sem_release() - セマフォを解放する
- ftok() - パス名とプロジェクト ID を、System V IPC キーに変換する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open