這篇文章將為大家詳細講解有關(guān)swoole創(chuàng)建worker的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),青田企業(yè)網(wǎng)站建設(shè),青田品牌網(wǎng)站建設(shè),網(wǎng)站定制,青田網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,青田網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。swoole是一個多進程模型的框架,當(dāng)啟動一個進程swoole應(yīng)用時,一共會創(chuàng)建2+n+m個進程,n為worker進程數(shù),m為TaskWorker進程數(shù),1個master進程和一個manager進程,關(guān)系如下圖所示
Master進程為主進程,該進程會創(chuàng)建Manager進程、Reactor線程等工作進/線程。
Worker進程作為Swoole的工作進程,所有的業(yè)務(wù)邏輯代碼均在此進程上運行。當(dāng)Reactor線程接收到來自客戶端的數(shù)據(jù)后,會將數(shù)據(jù)打包通過管道發(fā)送給某個Worker進程。
swoole中worker/task進程都是由Manager進程Fork并管理的。
子進程結(jié)束運行時,manager進程負責(zé)回收此子進程,避免成為僵尸進程。并創(chuàng)建新的子進程
服務(wù)器關(guān)閉時,manager進程將發(fā)送信號給所有子進程,通知子進程關(guān)閉服務(wù)
服務(wù)器reload時,manager進程會逐個關(guān)閉/重啟子進程
fork():
一個進程,包括代碼、數(shù)據(jù)和分配給進程的資源。fork()函數(shù)通過系統(tǒng)調(diào)用創(chuàng)建一個與原來進程幾乎完全相同的進程,也就是兩個進程可以做完全相同的事,但如果初始參數(shù)或者傳入的變量不同,兩個進程也可以做不同的事。
一個進程調(diào)用fork()函數(shù)后,系統(tǒng)先給新的進程分配資源,例如存儲數(shù)據(jù)和代碼的空間。然后把原來的進程的所有值都復(fù)制到新的新進程中,只有少數(shù)值與原來的進程的值不同。相當(dāng)于克隆了一個自己。
關(guān)于“swoole創(chuàng)建worker的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。