前面介紹了php實現共享內存的一個函數shmop,也應用到了項目中,不過shmop有侷限性,那就是隻支持字符串類型的;sem通過個人測試,是混合型,支持數組類型,能夠直接存儲,直接獲取,少了多餘的步驟格式轉換。不過sem有大小限制,shmop能夠設置很大很大很大~~~不過也能夠再php.ini修改相關配置。php
<?php $key = 0x4337b124; $shar_key = 1; // 建立一個共享內存 $shm_id = shm_attach($key, 1024, 0666); // resource type if ($shm_id === false) { die('Unable to create the shared memory segment' . PHP_EOL); } //設置一個值 shm_put_var($shm_id, $shar_key, 'test'); //刪除一個key shm_remove_var($shm_id, $shar_key); //獲取一個值 $value = shm_get_var($shm_id, $shar_key); var_dump($value); //檢測一個key是否存在 var_dump(shm_has_var($shm_id, $shar_key)); //從系統中移除 shm_remove($shm_id); //關閉和共享內存的鏈接 shm_detach($shm_id);
注意:$shar_key 只能是 int 型的參數。數組
詳細說明ide
shm_attach
打開創建共享內存空間。
語法: int shm_attach(int key, int [memsize], int [perm]);
返回值: 整數
函數種類: 操做系統與環境
內容說明: 本函數用來打開或者創建共享內存空間。參數 key 爲這部分的鍵。參數 memsize 可省略,表示所需最小的內存空間 (單位爲 byte 位組),默認值在 php3.ini 或 php.ini 中的 sysvshm.init_mem 配置,若無配置則爲 10000 bytes。參數 perm 亦可省略,爲該內存空間的使用權限,默認值爲 666。返回值爲共享內存的ID 值,可供程序使用。函數
shm_detach
停止共享內存空間連接。
語法: int shm_detach(int shm_identifier);
返回值: 整數
函數種類: 操做系統與環境
內容說明: 本函數用來停止與共享內存空間的連接。參數 shm_identifier 即爲欲中止部分的共享內存 ID 值。測試
shm_remove
清除內存空間。
語法: int shm_remove(int shm_identifier);
返回值: 整數
函數種類: 操做系統與環境
內容說明: 本函數用來清除共享內存空間的全部資料。參數 shm_identifier 即爲欲中止部分的共享內存 ID 值。操作系統
shm_put_var
加入或更新內存空間中的變量。
語法: int shm_put_var(int shm_identifier, int variable_key, mixed variable);
返回值: 整數
函數種類: 操做系統與環境
內容說明: 本函數可用來增長或者修改內存空間中變量值。參數 shm_identifier 爲欲增長修改的共享內存 ID 值。參數 variable_key 爲欲增長修改的變量名稱鍵。參數 variable 爲變量的內容,變量的類型能夠是倍精確數 (double)、整數 (integer)、字符串 (string) 或者是數組 (array)。code
shm_get_var
取得內存空間中指定的變量。
語法: mixed shm_get_var(int shm_identifier, int variable_key);
返回值: 混合類型資料
函數種類: 操做系統與環境
內容說明: 本函數可用來取得內存空間中指定的變量值。參數 shm_identifier 爲欲取得的共享內存 ID 值。參數 variable_key 爲欲取得的變量名稱鍵。返回值即爲指定變量鍵的值。內存
shm_remove_var
刪除內存空間中指定的變量。
語法: int shm_remove_var(int id, int variable_key);
返回值: 整數
函數種類: 操做系統與環境
內容說明: 本函數可用來刪除內存空間中指定的變量值。參數 shm_identifier 爲欲除去的共享內存 ID 值。參數 variable_key 爲欲刪除的變量名稱鍵。rem