前面介紹了php實現共享內存的一個函數shmop,也應用到了項目中,不過shmop有局限性,那就是只支持字符串類型的;sem經過我的測試,是混合型,支持數組類型,可以直接存儲,直接獲取,少了多余的步驟格式轉換。不過sem有大小限制,shmop可以設置很大很大很大~~~不過也可以再php.ini修改相關配置。
?php$key = 0x4337b124; $shar_key = 1;// 創建一個共享內存$shm_id = shm_attach($key, 1024, 0666); // resource typeif ($shm_id === false) { die( Unable to create the shared memory segment . PHP_EOL);//設置一個值shm_put_var($shm_id, $shar_key, test //刪除一個keyshm_remove_var($shm_id, $shar_key);//獲取一個值$html' target='_blank'>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 型的參數。
詳細說明
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)。
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 為欲刪除的變量名稱鍵。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
PHP代碼自動檢測(git/svn集成PHP_CodeSniffer)
php編譯安裝擴展redis及swoole的方法
以上就是php實現共享內存進程通信函數(_shm)的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答