婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 淺談并發處理PHP進程間通信之System V IPC

淺談并發處理PHP進程間通信之System V IPC

熱門標簽:新河科技智能外呼系統怎么樣 地圖標注平臺怎么給錢注冊 福州人工外呼系統哪家強 注冊400電話申請 釘釘打卡地圖標注 常州地圖標注服務商 安裝電銷外呼系統 衡水外呼系統平臺 百度商鋪地圖標注

前言

它的安裝和使用非常簡單,在編譯 PHP 時添加 --enable-sysvsem --enable-sysvshm --enable-sysvmsg 參數就可以,當然 Windows 上無法使用。

今天我們仍舊使用上一篇文章的例子來介紹 PHP 內部實現的進程間通信,在了解它們的具體使用之前,先簡單介紹一下信號量、共享內存、消息隊列的概念。

Unix System V IPC

信號量

信號量又稱為信號燈,它是用來協調不同進程間的數據對象的,而最主要的應用是共享內存方式的進程間通信。本質上,信號量是一個計數器,它用來記錄對某個資源(如共享內存)的存取狀況。

一般說來,為了獲得共享資源,進程需要執行下列操作:

1.獲取控制共享資源的信號量的值;

2.若值為正,進程將信號量減1,進程操作共享資源,進入步驟4;

3.若值0,則拒絕進程使用共享資源,進程進入睡眠狀態,直至信號量值大于0后,進程被喚醒,轉入步驟1;

4.當進程不再使用共享資源時,將信號量值加1。如果此時有進程正在睡眠等待此信號量,則喚醒此進程;

信號量的使用可以類比為:

一個房間必須用鑰匙才能開門,有N把鑰匙放在門口,拿到鑰匙開門進入房間,出來時將鑰匙放回并告知等待的人去取鑰匙開門。 此例中,鑰匙的數量限制了同一時間內在房間的最大人數。房間即共享資源,鑰匙是信號量,而想進入房間的人則是多個進程。

信號量有二值和多值之分,一般共享資源都不允許多個進程同時操作,多使用二值信號量。

共享內存

為了在多個進程間交換信息,內核專門留出了一塊內存區,可以由需要訪問的進程將其映射到自己的私有地址空間。進程就可以直接讀寫這一塊內存而不需要進行數據的拷貝,從而大大提高效率。共享內存可以比喻成一塊公用黑板,每個人都能在上面留言,寫東西。

到于共享內存,我們一定要關心其生存周期:System V 共享內存區域對象是隨內核持續的,除非顯式刪除共享內存區域對象,即使所有訪問共享內存區域對象的進程都已經正常結束,共享內存區域對象仍然在內核中存在,在內核重新引導之前,對該共享內存區域對象的任何改寫操作都將一直保留。

消息隊列

消息隊列是一條公共消息鏈,消息存取一般為先進先出(FIFO),能實現多個進程對消息的原子操作和異步存取。消息隊列的應用十分廣泛,不光是進程間通信,流程異步化、解耦方面也應用廣泛。

消息隊列則相當于一條流水線的一段,上層有多個工人把產品放入,下層有多個工人將產品取出加工。

本文的實現不包括消息隊列的使用,但對于消息隊列實現互斥鎖,這里給出一個思路:先給消息隊列初始化一個值,并發進程競爭獲取此值,獲取到值的進程進行共享資源的處理,進程不再共享資源時,再將此值放入隊列,通過隊列的原子性來保證同時只有一個進程訪問共享資源。

函數介紹

ftok

int ftok ( string $pathname, string $proj )

ftok將一個路徑 pathname 和一個項目名(必須為一個字符), 轉化成一個整數形的 System V IPC 鍵,本文介紹的 System V 通信方式都是基于此鍵來完成的,此ID 值也可以自己指定一個 INT 型來確定,不必要使用 ftok 獲取;

需要注意的是:ftok 的結果是通過文檔的索引節點號來計算獲取的,而文件的刪除重建會導致其索引節點號變動,所以即使是相同的文件名,也可能會導致獲取到的 IPC 鍵不同,所以需要盡量保證 $pathname 不變動;

semaphore函數

resource sem_get ( int $key [, int $max_acquire = 1 [, int $perm = 0666 [, int $auto_release = 1 ]]] )

獲取或生成一個信號量標識,我們注意其 max_acquire 值為 1,即保證同時只有一個進程能獲取到它;auto_release 為 1 ,保證進程在非正常情況退出時能釋放此信號量;

bool sem_acquire ( resource $sem_identifier [, bool $nowait = false ] )

bool sem_release ( resource $sem_identifier )

獲取/釋放一個信號量,注意獲取信號量的 $nowait 為false,使進程在獲取信號量失敗后進行進程等待即可。

shared_memory函數

resource shm_attach ( int $key [, int $memsize [, int $perm = 0666 ]] )

bool shm_detach ( resource $shm_identifier )

連接/斷開 與 共享內存段的連接 $memsize, 以字節 byte 為單位;需要注意,在第一次使用 $key 連接內存段創建時,會初始化內存大小和權限,后續再連接時,這兩個參數會被忽略。

bool shm_put_var ( resource $shm_identifier , int $variable_key , mixed $variable )

mixed shm_get_var ( resource $shm_identifier , int $variable_key )

向共享內存內寫入或讀取一個變量,需要注意變量 key 只能是 int 型;

代碼實現

function getCycleIdFromSystemV($max, $min = 0) {
    $key = ftok('/tmp/cycleIdFromSystemV.tok', 'd');
    $var_key = 0;
    $sem_id = sem_get($key);
    $shm_id = shm_attach($key, 4096);

    if (sem_acquire($sem_id)) {
        $cycle_id = intval(shm_get_var($shm_id, $var_key));
        $cycle_id++;
        if ($cycle_id > $max) {
            $cycle_id = $min;
        }
        shm_put_var($shm_id, $var_key, $cycle_id);

        shm_detach($shm_id);
        sem_release($sem_id);

        return $cycle_id;
    }
    
    return false;
}

小結

我們發現 PHP 對信號量和共享內存封裝得很好,使用起來非常簡單。除此之外,PHP 的類庫 Sync 將常用 IPC 方法封裝成為類,能實現跨平臺的使用,感興趣的可以了解使用一下。

當然進程間通信的方式和種類有很多,本文介紹的 id 遞增只是很簡單的一種,不過,知道了方法,再去把這些方法改造成為其他種類也就不難了。

以上就是淺談并發處理PHP進程間通信之System V IPC的詳細內容,更多關于并發處理PHP進程間通信之System V IPC的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP下用Swoole實現Actor并發模型的方法
  • 淺談并發處理PHP進程間通信之外部介質
  • PHP+Redis鏈表解決高并發下商品超賣問題(實現原理及步驟)
  • 詳解PHP中curl_multi并發的實現
  • php多進程并發編程防止出現僵尸進程的方法分析
  • PHP高并發和大流量解決方案整理
  • PHP 并發場景的幾種解決方案
  • php多進程模擬并發事務產生的問題小結
  • 淺談Swoole并發編程的魅力

標簽:六安 柳州 白城 鶴崗 鷹潭 唐山 遼陽 克拉瑪依

巨人網絡通訊聲明:本文標題《淺談并發處理PHP進程間通信之System V IPC》,本文關鍵詞  淺談,并發,處理,PHP,進程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談并發處理PHP進程間通信之System V IPC》相關的同類信息!
  • 本頁收集關于淺談并發處理PHP進程間通信之System V IPC的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美一卡2卡三卡4卡5免费| 国产欧美日韩麻豆91| 天堂在线亚洲视频| 国产精品不卡一区| 国产精品久久久久久久久免费相片 | 欧美大白屁股肥臀xxxxxx| 欧美一a一片一级一片| 91在线国产福利| 菠萝蜜视频在线观看一区| 成人免费毛片a| av亚洲精华国产精华| 91亚洲国产成人精品一区二区三| 大尺度一区二区| 日韩一区国产二区欧美三区| 国产99久久久国产精品潘金| 极品少妇xxxx精品少妇| 国产精品99久久久| 本田岬高潮一区二区三区| 成人午夜电影网站| 欧美日韩一卡二卡| 亚洲精品一区二区在线观看| 国产日韩精品一区二区三区| 国产精品久久久久久久浪潮网站 | 亚瑟在线精品视频| 免费观看在线综合色| 精品一区二区三区免费| 成人av资源在线观看| 在线观看中文字幕不卡| 亚洲精品一区二区三区影院| 国产精品美女久久久久av爽李琼 | 中文字幕av资源一区| 一区二区在线电影| 免费在线观看视频一区| 成人性生交大片免费看中文| 欧美最猛性xxxxx直播| 欧美精品一区二区三区蜜桃视频| 日韩毛片视频在线看| 奇米888四色在线精品| 成人黄色a**站在线观看| 欧美理论电影在线| 国产精品私房写真福利视频| 亚洲一区精品在线| 国产精品一级在线| 欧美日韩国产在线观看| 国产精品国产a级| 久久疯狂做爰流白浆xx| 欧美在线999| 国产精品久久久久影院色老大| 日韩—二三区免费观看av| 色婷婷香蕉在线一区二区| 国产亚洲1区2区3区| 日本亚洲电影天堂| 在线观看一区二区精品视频| 中文成人av在线| 国产一区欧美日韩| 制服丝袜国产精品| 亚洲一区二区三区中文字幕 | 91美女片黄在线观看91美女| 精品国产髙清在线看国产毛片| 亚洲一二三级电影| 91在线免费播放| 国产精品丝袜一区| 高清免费成人av| 久久久久久麻豆| 黑人巨大精品欧美黑白配亚洲| 欧美精品色综合| 日韩精品一二区| 欧美日韩一区高清| 亚洲一二三级电影| 欧美日韩黄色一区二区| 亚洲午夜精品17c| 欧美亚洲综合一区| 一区二区三区 在线观看视频| 91视频一区二区三区| 亚洲视频在线一区| 欧美午夜电影一区| 亚洲电影激情视频网站| 欧美三区免费完整视频在线观看| 一级特黄大欧美久久久| 在线观看www91| 午夜视频一区二区| 91精品国产综合久久久久久 | 五月天丁香久久| 欧美一级日韩不卡播放免费| 日本欧美在线观看| 精品国产网站在线观看| 国产精品538一区二区在线| 国产视频911| 99精品国产热久久91蜜凸| 亚洲欧美在线视频观看| 在线免费观看日本一区| 午夜精品久久久久久久久| 日韩精品专区在线影院观看| 国产精品一区二区久激情瑜伽 | 日韩天堂在线观看| 国产成人在线视频免费播放| 国产精品乱码一区二三区小蝌蚪| 一本久久a久久免费精品不卡| 香蕉久久夜色精品国产使用方法 | 天天av天天翘天天综合网色鬼国产| 欧美一级爆毛片| 成人免费va视频| 亚洲一卡二卡三卡四卡 | 99久久久精品免费观看国产蜜| 亚洲欧美另类综合偷拍| 欧美一级在线免费| 成人美女视频在线看| 亚洲一区二区成人在线观看| 久久久久亚洲蜜桃| 欧美日韩一区二区三区不卡| 久草中文综合在线| 亚洲日本青草视频在线怡红院| 欧美另类久久久品| 91亚洲永久精品| 激情都市一区二区| 亚洲福利视频三区| 国产精品久久99| 精品区一区二区| 在线亚洲精品福利网址导航| 国产精品综合久久| 日韩极品在线观看| 亚洲免费视频中文字幕| 精品国一区二区三区| 欧美色成人综合| 色999日韩国产欧美一区二区| 国产精品亚洲成人| 日本最新不卡在线| 一区二区三区成人在线视频| 日本一区二区电影| 久久综合网色—综合色88| 精品视频在线视频| 欧美最猛性xxxxx直播| 成人av免费在线播放| 国模大尺度一区二区三区| 午夜视频一区二区三区| 亚洲小说欧美激情另类| 有码一区二区三区| 亚洲综合免费观看高清完整版在线| 菠萝蜜视频在线观看一区| 国产盗摄女厕一区二区三区| 99国产精品久久久久久久久久 | 久久九九全国免费| 欧美日韩国产在线观看| 91黄视频在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 91精品国产综合久久精品| 在线观看国产精品网站| 91精彩视频在线| 在线观看视频一区| 91成人免费网站| 欧洲在线/亚洲| 在线亚洲人成电影网站色www| 色综合久久六月婷婷中文字幕| 成人av综合在线| aa级大片欧美| 在线视频国产一区| 欧美日韩五月天| 欧美一区二区三区播放老司机 | 国产乱码精品一区二区三区忘忧草 | 日韩一区中文字幕| 亚洲欧美在线视频观看| 亚洲激情男女视频| 亚洲观看高清完整版在线观看| 一区二区三区自拍| 午夜精品在线视频一区| 奇米色一区二区三区四区| 国产精品一二二区| 日本久久精品电影| 日韩午夜在线播放| 国产无一区二区| 国产成人精品免费在线| 国产成人精品免费在线| av福利精品导航| 欧美天堂亚洲电影院在线播放| 欧美日韩卡一卡二| 欧美成人乱码一区二区三区| 国产丝袜欧美中文另类| 亚洲激情图片小说视频| 久久精品国产亚洲一区二区三区| 国产精品一二三四五| 色噜噜狠狠成人网p站| 日韩精品一区国产麻豆| 亚洲欧洲日韩一区二区三区| 日韩高清欧美激情| 成人激情免费电影网址| 欧美日韩高清一区二区三区| 久久久精品免费观看| 亚洲一二三专区| 国产美女精品在线| 欧美猛男gaygay网站| 国产日韩精品一区二区浪潮av| 午夜精品福利久久久| 成人免费观看视频| 精品国产一区久久| 亚洲成人午夜影院| 97se狠狠狠综合亚洲狠狠| 欧美mv日韩mv| 亚洲国产精品人人做人人爽| 成人免费高清在线| 久久免费电影网|