溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Swoole中如何理解進(jìn)程和事件IO

發(fā)布時(shí)間:2021-10-09 09:27:43 來源:億速云 閱讀:128 作者:柒染 欄目:web開發(fā)

本篇文章為大家展示了Swoole中如何理解進(jìn)程和事件IO,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

1.文件鎖
子進(jìn)程回復(fù)制父進(jìn)程的IO句柄,但是不能讓所有的子進(jìn)程同時(shí)對(duì)同一個(gè)文件進(jìn)行操作,所以需要文件鎖。

2.進(jìn)程間的通訊方式--管道
管道是一組(2個(gè))特殊的描述符
管道需要在fork函數(shù)調(diào)用前創(chuàng)建
如果某一段主動(dòng)關(guān)閉管道,另一端讀取操作會(huì)直接返回0,之后會(huì)關(guān)閉管道
Swoole中如何理解進(jìn)程和事件IO

在父進(jìn)程中創(chuàng)建管道的時(shí)候,父進(jìn)程會(huì)創(chuàng)建一組描述符;子進(jìn)程在進(jìn)行復(fù)制父進(jìn)程時(shí),會(huì)復(fù)制這一組描述符。

3.進(jìn)程間的通訊方式--消息隊(duì)列
使用消息隊(duì)列比流式管道的好處是,假如某一端服務(wù)掛了,但是因?yàn)橄⑦€在隊(duì)列中,所以數(shù)據(jù)不會(huì)丟失
消息隊(duì)列的通訊方式很像共享內(nèi)存
Swoole中如何理解進(jìn)程和事件IO

可以通過指定key創(chuàng)建一個(gè)消息隊(duì)列
在消息隊(duì)列中傳遞的數(shù)據(jù)大小有限制 默認(rèn)65535k
消息隊(duì)列會(huì)一直保留到被主動(dòng)關(guān)閉

4.IO多路復(fù)用
epoll會(huì)監(jiān)聽注冊(cè)再在自己名下所有的socket描述符
當(dāng)有socket感興趣的時(shí)間發(fā)生時(shí),epoll函數(shù)才會(huì)響應(yīng),并返回有時(shí)間發(fā)生的socket集合
epoll的本事是阻塞IO,優(yōu)點(diǎn)是能夠處理大量的socket集合
Swoole中如何理解進(jìn)程和事件IO

5.Event Loop簡(jiǎn)介
Event loop是一個(gè)Reactor線程,其中運(yùn)行了一個(gè)epoll實(shí)例
可通過接口添加到socket描述符的epoll監(jiān)聽中,并制定時(shí)間響應(yīng)的回調(diào)函數(shù)
因?yàn)镋vent loop是單獨(dú)線程,不能用于fpm的環(huán)境下。因?yàn)閒pm是新起的進(jìn)程,事件完畢后有可能被關(guān)閉,此時(shí)scoket便不能被監(jiān)聽了。
開啟Event loop后,程序會(huì)啟動(dòng)一個(gè)線程并一直阻塞在epoll的監(jiān)聽上,開啟了Event loop后,程序會(huì)一直運(yùn)行不停止,這也是swoole開發(fā)者的本意。終止的方法是調(diào)用swoole_event_exit函數(shù)。

6.swoole進(jìn)程
swoole process包含三個(gè)部分:管道,內(nèi)存和IO句柄
swoole process有以下的幾個(gè)優(yōu)點(diǎn):
是基于C語言封裝的管理模塊,方便PHP多進(jìn)程編程;
內(nèi)置管道、消息隊(duì)列接口,方便實(shí)現(xiàn)進(jìn)程間的通信;
提供自定義信號(hào)管理

上述內(nèi)容就是Swoole中如何理解進(jìn)程和事件IO,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI