php 共享記憶體學習 shmop函式

2021-09-08 18:25:07 字數 1283 閱讀 4355

問題:希望可以在程序間共享變數,為共享資料提供快速訪問

解決方案:除了可以使用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已經提供了一套很好的方式,另一方面,自己來操控記憶體的難度較大,記憶體的讀寫與轉存,包括後面可能會用到的儲存策略,要是沒有一定計算機組成原理的基礎,想做這些不是一件容易的事情。那為什麼還要使用它呢?如果我想進行管道通訊...