shm_attach

(PHP 4, PHP 5, PHP 7)

shm_attach共有メモリセグメントを作成またはオープンする

説明

shm_attach ( int $key [, int $memsize [, int $perm = 0666 ]] ) : resource

shm_attach() は ID を返します。 これは、指定されたキー key で System V 共有メモリにアクセスする際に使用することが可能です。 最初のコールの際に、サイズが memsize、 オプションのパーミッション perm を指定した共有メモリセグメントを作成します。

同じ keyshm_attach() を 2 回コールした場合は 別の共有メモリ ID が返されますが、両方の ID は同じ共有メモリをアクセスします。 memsize および perm は無視されます。

パラメータ

key

共有メモリセグメント ID を表す数値。

memsize

メモリのサイズ。省略した場合のデフォルトは php.inisysvshm.init_mem、あるいは 10000 バイトとなります。

perm

オプションのパーミッション設定。デフォルトは 0666 です。

返り値

共有メモリセグメントの ID を返します。

変更履歴

バージョン 説明
5.3.0 この関数の返す値の型が、 integer から リソース に変わりました。

注意

注意:

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;
?>

参考

  • shm_detach() - 共有メモリセグメントへの接続を閉じる
  • ftok() - パス名とプロジェクト ID を、System V IPC キーに変換する