(PHP 4, PHP 5, PHP 7)
shm_attach — 共有メモリセグメントを作成またはオープンする
$key
[, int $memsize
[, int $perm
= 0666
]] ) : resource
shm_attach() は ID を返します。
これは、指定されたキー key
で System V 共有メモリにアクセスする際に使用することが可能です。
最初のコールの際に、サイズが memsize
、
オプションのパーミッション perm
を指定した共有メモリセグメントを作成します。
同じ key
で
shm_attach() を 2 回コールした場合は
別の共有メモリ ID が返されますが、両方の ID は同じ共有メモリをアクセスします。
memsize
および
perm
は無視されます。
key
共有メモリセグメント ID を表す数値。
memsize
メモリのサイズ。省略した場合のデフォルトは php.ini の sysvshm.init_mem、あるいは 10000 バイトとなります。
perm
オプションのパーミッション設定。デフォルトは 0666 です。
共有メモリセグメントの ID を返します。
注意:
PHP 5.3.0 より前のバージョンでは、この関数の返す値は integer 型の値でした。 前のバージョンと同じ値を得るには、次のように帰り値を integer へとキャストします。
<?php
// テンポラリファイルを作り、そのパスを返します
$tmp = tempnam('/tmp', 'PHP');
// ファイルトークンキーを取得します
$key = ftok($tmp, 'a');
// SHM リソースをアタッチします。あとでキャストすることに注意
$id = shm_attach($key);
if ($id === false) {
die('共有メモリセグメントを作成できません');
}
// integer にキャストします。PHP 5.3.0 より前のバージョンでは
// リソース ID が返り値となっており、この値はリソースを integer
// にキャストすることで得られるからです
$id = (integer) $id;
?>