XCIV共有メモリ関数(shmop)
shmop ã¯ã€å…±æœ‰ãƒ¡ãƒ¢ãƒªã‚»ã‚°ãƒ¡ãƒ³ãƒˆã‚’PHPã‹ã‚‰ç°¡å˜ã«èªã¿æ›¸ãã¾ãŸã¯ä½œæˆã€
削除ã™ã‚‹ã“ã¨ã‚’å¯èƒ½ã«ã™ã‚‹ä¸€é€£ã®é–¢æ•°ã§ã™ã€‚Windows上ã§ã¯å…±æœ‰ãƒ¡ãƒ¢ãƒªãŒ
サãƒãƒ¼ãƒˆã•れãªã„ãŸã‚ã€ã“れらã®é–¢æ•°ã¯å‹•作ã—ã¾ã›ã‚“。shmopを使用ã™ã‚‹
ã«ã¯ã€--enable-shmop パラメータを configure ã«æŒ‡å®šã—ã¦PHPをコンパ
イルã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
注æ„
ã“ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯å®Ÿé¨“çš„ãªã‚‚ã®ã§ã™ã€‚APIãã®ä»–ã¯ã€é€šçŸ¥ãªã変更ã•れる
å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
PHP 4.0.3ã§ã¯ã€ã“れらã®é–¢æ•°ã®åå‰ã«ã¯shmopã§ã¯
ãªãshmãŒå‰ã«ä»˜ãã¾ã™ã€‚
例 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 -- 共有メモリブãƒãƒƒã‚¯ã«ãƒ‡ãƒ¼ã‚¿ã‚’書ã込む