1、shmop 系列函式使用
<?php
//使用shmop 系列函式
set_time_limit(0);
$shm_key = ftok(__file__, 't');
$shm_id = shmop_open($shm_key, "c", 0655, 1024);
$size = shmop_write($shm_id, "hello world".php_eol, 0);
shmop_write($shm_id, 'i love you'.php_eol, $size+1);
echo $size.php_eol;
$data = shmop_read($shm_id, 0, 100);
var_dump($data);
shmop_delete($shm_id);
shmop_close($shm_id);
//shared memory functions
/** * shmop_open(int $key , string $flags , int $mode , int $size)
* $key 共享記憶體的key
* $flags 的值有以下幾種
* a : 建立乙個唯讀的共享記憶體區。
* c : 如果共享記憶體區已存在,則開啟該共享記憶體區,並嘗試讀寫。否則新建共享記憶體區
* w : 建立乙個讀寫共享記憶體區
* n : 建立乙個共享記憶體區,如果已存在,則返回失敗
* * $mode 讀寫許可權。如0755 0644 等
* $size 申請共享記憶體區的大小
*//**
* shmop_read( resource $shmid , int $start , int $count)
* 將從共享記憶體塊中讀取資料
* $shmid 共享記憶體id,資源型別
* $start 從共享記憶體的那個位元組開始讀起
* $count 一次讀取多少個位元組。
* 如果count值小於傳送的首席資訊官度,則資訊會被截斷。
*//**
* shmop_write(resource $shmid , string $data , int $offset)
* 將資料寫入共享記憶體塊
* $data 將要寫入的資料
* $offset 從共享記憶體塊的那個位置開始寫入。
* 該函式的返回值是寫入資料的長度。
*//**
* shmop_size(resource $shmid);
* 返回當前共享記憶體塊,已經使用的大小
*//**
* shmop_delete ( resource $shmid )
* 刪除乙個共享記憶體塊的,刪除引用關係
*//**
* shmop_close ( resource $shmid )
* 關閉共享記憶體塊
* 要先使用shmop_delete 之後才能繼續使用shmop_close
*/2、shm 系列函式使用
<?php
//使用訊號量擴充套件共享記憶體
$key = ftok(__file__, 'a');
$share_key = 1;
//建立乙個共享記憶體,大小為1024位元組,許可權為755
$shm_id = shm_attach($key, 1024, 0755);
//將乙個key=>value放進共享記憶體
$message1 = "i love roverliang";
shm_put_var($shm_id, $share_key, $message1);
//重複使用key ,前乙個設定的值會被後乙個設定的值覆蓋掉。
$message2 = "i love rover";
shm_put_var($shm_id, $share_key, $message2);
//讀取乙個共享記憶體值
$read_message = shm_get_var($shm_id, $share_key);
echo $read_message.php_eol;
//並不是取走了,而是讀取
$read_message2 = shm_get_var($shm_id, $share_key);
echo $read_message2.php_eol;
//判斷共享記憶體中,某個值是否存在
$i***ists = shm_has_var($shm_id, $share_key);
var_dump($i***ists);
//刪除乙個值
shm_remove_var($shm_id, $share_key);
//判斷共享記憶體中,某個值是否存在
$i***ists = shm_has_var($shm_id, $share_key);
var_dump($i***ists);
//刪除乙個共享記憶體
shm_remove($shm_id);
//關閉共享記憶體的連線
shm_detach($shm_id);
版權歸原作者 PHP共享記憶體的應用shmop系列
簡單的說明 可能很少情況會使用php來操控共享記憶體,一方面在記憶體的控制上,mc已經提供了一套很好的方式,另一方面,自己來操控記憶體的難度較大,記憶體的讀寫與轉存,包括後面可能會用到的儲存策略,要是沒有一定計算機組成原理的基礎,想做這些不是一件容易的事情。那為什麼還要使用它呢?如果我想進行管道通訊...
PHP共享記憶體的應用shmop系列
簡單的說明 可能很少情況會使用php來操控共享記憶體,一方面在記憶體的控制上,mc已經提供了一套很好的方式,另一方面,自己來操控記憶體的難度較大,記憶體的讀寫與轉存,包括後面可能會用到的儲存策略,要是沒有一定計算機組成原理的基礎,想做這些不是一件容易的事情。那為什麼還要使用它呢?如果我想進行管道通訊...
php 共享記憶體學習 shmop函式
問題 希望可以在程序間共享變數,為共享資料提供快速訪問 解決方案 除了可以使用apc模組,還可以用shmop或system v共享記憶體 1 建立鍵 2 將乙個可訪問的檔案路徑名轉換為乙個可供 shmop open 和其他系統vipc keys使用的整數,proj引數必須是乙個字串,這個引數其實就是...