問題:希望可以在程序間共享變數,為共享資料提供快速訪問
解決方案:除了可以使用apc模組,還可以用shmop或system v共享記憶體
1//建立鍵
2//將乙個可訪問的檔案路徑名轉換為乙個可供 shmop_open() 和其他系統vipc keys使用的整數,proj引數必須是乙個字串,這個引數其實就是讀寫方式34
//第2個引數傳乙個字串, ftok建立乙個id
5$shmop_key = ftok(__file__,'b');
6echo
$shmop_key."
";
建立id
1//建立16384位元組共享記憶體塊 0600許可權2/*
3* 第2個引數
4* 模式 「a」,它允許您訪問唯讀記憶體段
5* 模式 「w」,它允許您訪問可讀寫的記憶體段
6* 模式 「c」,它建立乙個新記憶體段,或者如果該記憶體段已存在,嘗試開啟它進行讀寫
7* 模式 「n」,它建立乙個新記憶體段,如果該記憶體段已存在,則會失敗8*/
9$shmop_id = shmop_open($shmop_key,'c',0600,16384);
10echo
$shmop_id."
";
讀取寫入
1//獲取整個共享記憶體段 後2引數 從第0位元組開始讀, shmop_size獲取$shmop_id的位元組大小
2$population = shmop_read($shmop_id,0,shmop_size($shmop_id
));3
4echo
$population;5
6//處理資料
7$births = 3000;
8$immigrants = 200;
9$deaths = 2800;
10$emigrants = 300;
1112
$population += ($births + $immigrants - $deaths - $emigrants
);13
14//
將值存回到共享記憶體段 第3個引數0表示寫入的位置
15$shmop_bytes_written = shmop_write($shmop_id,$population,0);
關閉資源
1//關閉控制代碼
2 shmop_close($shmop_id);
參考:
shmop 系列函式使用 php共享記憶體
1 shmop 系列函式使用 使用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 s...
PHP共享記憶體的應用shmop系列
簡單的說明 可能很少情況會使用php來操控共享記憶體,一方面在記憶體的控制上,mc已經提供了一套很好的方式,另一方面,自己來操控記憶體的難度較大,記憶體的讀寫與轉存,包括後面可能會用到的儲存策略,要是沒有一定計算機組成原理的基礎,想做這些不是一件容易的事情。那為什麼還要使用它呢?如果我想進行管道通訊...
PHP共享記憶體的應用shmop系列
簡單的說明 可能很少情況會使用php來操控共享記憶體,一方面在記憶體的控制上,mc已經提供了一套很好的方式,另一方面,自己來操控記憶體的難度較大,記憶體的讀寫與轉存,包括後面可能會用到的儲存策略,要是沒有一定計算機組成原理的基礎,想做這些不是一件容易的事情。那為什麼還要使用它呢?如果我想進行管道通訊...