本篇文章為大家展示了Swoole中如何理解進(jìn)程和事件IO,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
為通海等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及通海網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、通海網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!1.文件鎖
子進(jìn)程回復(fù)制父進(jìn)程的IO句柄,但是不能讓所有的子進(jìn)程同時對同一個文件進(jìn)行操作,所以需要文件鎖。
2.進(jìn)程間的通訊方式--管道
管道是一組(2個)特殊的描述符
管道需要在fork函數(shù)調(diào)用前創(chuàng)建
如果某一段主動關(guān)閉管道,另一端讀取操作會直接返回0,之后會關(guān)閉管道
在父進(jìn)程中創(chuàng)建管道的時候,父進(jìn)程會創(chuàng)建一組描述符;子進(jìn)程在進(jìn)行復(fù)制父進(jìn)程時,會復(fù)制這一組描述符。
3.進(jìn)程間的通訊方式--消息隊列
使用消息隊列比流式管道的好處是,假如某一端服務(wù)掛了,但是因為消息還在隊列中,所以數(shù)據(jù)不會丟失
消息隊列的通訊方式很像共享內(nèi)存
可以通過指定key創(chuàng)建一個消息隊列
在消息隊列中傳遞的數(shù)據(jù)大小有限制 默認(rèn)65535k
消息隊列會一直保留到被主動關(guān)閉
4.IO多路復(fù)用
epoll會監(jiān)聽注冊再在自己名下所有的socket描述符
當(dāng)有socket感興趣的時間發(fā)生時,epoll函數(shù)才會響應(yīng),并返回有時間發(fā)生的socket集合
epoll的本事是阻塞IO,優(yōu)點是能夠處理大量的socket集合
5.Event Loop簡介
Event loop是一個Reactor線程,其中運行了一個epoll實例
可通過接口添加到socket描述符的epoll監(jiān)聽中,并制定時間響應(yīng)的回調(diào)函數(shù)
因為Event loop是單獨線程,不能用于fpm的環(huán)境下。因為fpm是新起的進(jìn)程,事件完畢后有可能被關(guān)閉,此時scoket便不能被監(jiān)聽了。
開啟Event loop后,程序會啟動一個線程并一直阻塞在epoll的監(jiān)聽上,開啟了Event loop后,程序會一直運行不停止,這也是swoole開發(fā)者的本意。終止的方法是調(diào)用swoole_event_exit函數(shù)。
6.swoole進(jìn)程
swoole process包含三個部分:管道,內(nèi)存和IO句柄
swoole process有以下的幾個優(yōu)點:
是基于C語言封裝的管理模塊,方便PHP多進(jìn)程編程;
內(nèi)置管道、消息隊列接口,方便實現(xiàn)進(jìn)程間的通信;
提供自定義信號管理
上述內(nèi)容就是Swoole中如何理解進(jìn)程和事件IO,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。