CXLVIII. 共有メモリ関数(shmop)

導入

shmop は、共有メモリセグメントを PHP から簡単に読み書きまたは作成、 削除することを可能にする一連の関数です。

注意: Windows 2000 より前のバージョンの Windows では共有メモリをサポートしていません。 Windows では、PHP が Apache や IIS などの web サーバモジュールとして稼動している場合にのみ shmop が動作します (CLI および CGI では動作しません)。

注意: PHP 4.0.3 では、以下の関数に接頭辞 shmop ではなく shm が付いていました。

要件

外部ライブラリを必要としません。

インストール手順

shmop を使用するには、 --enable-shmop パラメータを configure に 指定して PHP をコンパイルする必要があります。

実行時設定

設定ディレクティブは定義されていません。

定義済み定数

定数は定義されていません。

例 1. 共有メモリ操作の概要

<?php
   
// システムID 0xff3を有する 100 バイトの共有メモリブロックを作成する
$shm_id = shmop_open ( 0xff3 , "c" , 0644 , 100 );
if (!
$shm_id ) {
    echo
"共有メモリセグメントを作成できませんでした。\n" ;
}

// 共有メモリのブロック長を得る
$shm_size = shmop_size ( $shm_id );
echo
"SHM ブロックサイズ: " . $shm_size . " が作成されました。\n" ;

// 共有メモリにテスト用の文字列を書き込んでみる
$shm_bytes_written = shmop_write ( $shm_id , "my shared memory block" , 0 );
if (
$shm_bytes_written != strlen ( "my shared memory block" )) {
    echo
"データ全体を書き込めませんでした。\n" ;
}

// その文字列を再び読み込んでみる
$my_string = shmop_read ( $shm_id , 0 , $shm_size );
if (!
$my_string ) {
    echo
"共有メモリブロックから読み込めません。\n" ;
}
echo
"共有メモリ内のデータは次のようになります: " . $my_string . "\n" ;

// ブロックを削除し、共有メモリセグメントを閉じる
if (! shmop_delete ( $shm_id )) {
    echo
"共有メモリブロックに削除用のマークを付けることができません。" ;
}
shmop_close ( $shm_id );
   
?>

目次
shmop_close  -- 共有メモリブロックを閉じる
shmop_delete  -- 共有メモリブロックを削除する
shmop_open  -- 共有メモリブロックを作成またはオープンする
shmop_read  -- 共有メモリブロックからデータを読み込む
shmop_size  -- 共有メモリブロックの大きさを得る
shmop_write  -- 共有メモリブロックにデータを書き込む