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

# shmop_open

(PHP 4 >= 4.0.4, PHP 5)

shmop_open -- 共有メモリブロックを作成またはオープンする

## 説明

int shmop_open ( int key, string flags, int mode, int size )

shmop_open() は共有メモリブロックを作成または オープンします。

shmop_open() は次の 4 つの引数をとります。key は 共有メモリブロックのシステム ID であり、このパラメータは 10 進数または 16 進数で指定することが可能です。2 番目のパラメータは flags であり、 次のものを指定可能です。

- "a" アクセス用(shmat に SHM_RDONLY を設定する) 既存の共有メモリセグメントを読み込み専用でオープンする必要がある場合に このフラグを使用してください。

- "c" 作成用(IPC_CREATE を設定する) 新規に共有メモリセグメントが必要な場合にこのフラグを使用してください。 もし同じキーのセグメントがすでに存在する場合、それを読み書きモードで オープンしようと試みます。

- "w" 読み込み & 書き込みアクセス用 共有メモリセグメントの読み込みや書き込みの必要がある場合にこのフラグを 使用してください。たいていの場合はこのフラグを使用します。

- "n" 新規メモリセグメントの作成用(IPC_CREATE|IPC_EXCL を設定する) 新規に共有メモリセグメントが必要で、もし同じフラグのセグメントが 存在するときには失敗させたい場合にこのフラグを使用してください。 セキュリティを確保するために、このフラグは有用です。これを使用する ことで、条件の競合による問題を避けることが可能です。

3 番目のパラメータは mode で、共有メモリセグメントに設定したい 許可属性で、ファイルに関する許可属性と同様なものです。許可属性は、 例えば 0644 のような 8 進数形式で渡す必要があります。最後のパラメータ size には作成したい共有メモリブロックの大きさをバイト数で指定します。

> 注意: 注意: 既存のメモリセグメントをオープンする場合には、3 番目および 4 番目の引数には 0 を指定する必要があります。成功時に shmop_open() は作成した共有メモリセグメントに アクセスするために使用する ID を返します。

例 1. 共有メモリブロックを新規に作成する

`<?php $shm_key = ftok(__FILE__, 't'); $shm_id = shmop_open($shm_key, "c", 0644, 100); ?>`

この例は、ftok() が返すシステム ID の共有メモリブロックをオープンします。

前のページ | ホーム | 次のページ
shmop_delete | 上に戻る | shmop_read