shmop_open
共有メモリブロックを作成またはオープンする
説明
Shmopfalse shmop_open(
int $key
,
string $mode
,
int $permissions
,
int $size
)
パラメータ
-
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 を指定する必要があります。
戻り値
成功した場合は、shmop_open は
作成した共有メモリセグメントにアクセスするために使用する
Shmop クラスのインスタンスを返します。
失敗した場合に false
を返します。
エラー / 例外
mode
が不正な値だったり、
size
が 0 以下の値の場合、
ValueError がスローされます。
それ以外の場合で、処理に失敗した場合は E_WARNING
が発生します。
例
例1 共有メモリブロックを新規に作成する
<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>
この例は、ftok が返すシステム ID
の共有メモリブロックをオープンします。