shmop_open
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
shmop_open — 共有メモリブロックを作成またはオープンする
説明
shmop_open
( int $key
, string $mode
, int $permissions
, int $size
) : Shmop|false
shmop_open() は共有メモリブロックを作成または オープンします。
パラメータ
key
- 共有メモリブロックのシステム ID であり、10 進数または 16 進数で指定することが可能です。
mode
- フラグに設定できる内容は、次のとおりです。
- "a" アクセス用(shmat に SHM_RDONLY を設定する) 既存の共有メモリセグメントを読み込み専用でオープンする必要がある場合に このフラグを使用してください。
- "c" 作成用(IPC_CREATE を設定する) 新規に共有メモリセグメントが必要な場合にこのフラグを使用してください。 もし同じキーのセグメントがすでに存在する場合、それを読み書きモードで オープンしようと試みます。
- "w" 読み込み & 書き込みアクセス用 共有メモリセグメントの読み込みや書き込みの必要がある場合にこのフラグを 使用してください。たいていの場合はこのフラグを使用します。
- "n" 新規メモリセグメントの作成用(IPC_CREATE|IPC_EXCL を設定する) 新規に共有メモリセグメントが必要で、もし同じフラグのセグメントが 存在するときには失敗させたい場合にこのフラグを使用してください。 セキュリティを確保するために、このフラグは有用です。これを使用する ことで、条件の競合による問題を避けることが可能です。
permissions
- 共有メモリセグメントに設定したい 許可属性で、ファイルに関する許可属性と同様なものです。許可属性は、 例えば
0644
のような 8 進数形式で渡す必要があります。 size
- 作成したい共有メモリブロックの大きさをバイト数で指定します。
注意:
注意: 既存のメモリセグメントをオープンする場合には、3 番目および 4 番目の引数には 0 を指定する必要があります。成功時に
例
例1 共有メモリブロックを新規に作成する
<?php$shm_key = ftok(__FILE__, 't');$shm_id = shmop_open($shm_key, "c", 0644, 100);?>
この例は、ftok() が返すシステム ID の共有メモリブロックをオープンします。