中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Swoole的進(jìn)程模型
在《計(jì)算機(jī)組成原理》中我們都學(xué)過(guò),并發(fā)中最迫切需要解決的問(wèn)題之一,就是數(shù)據(jù)的可靠性問(wèn)題,防止臟讀臟寫(xiě)。

一、linux查看進(jìn)程

pstree命令可以查看進(jìn)程的樹(shù)模型

> php swoole_server_demo.php> pstree -ap|grep swoole_server_demo  |-php,2829 swoole_server_demo.php  |   |-php,2831 swoole_server_demo.php  |   |   `-php,2836 swoole_server_demo.php
  • 1

  • 2

  • 3

  • 4

  • 5

從系統(tǒng)的輸出中,可以看出server其實(shí)有3個(gè)進(jìn)程,進(jìn)程的pid分別是2829、2831、2836,其中2829是2831的父進(jìn)程,而2831又是2836的父進(jìn)程。
2829是根進(jìn)程,就是所謂的Master進(jìn)程;而2831則是Manager進(jìn)程;最后的2836是Worker進(jìn)程。

二、各進(jìn)程之間的關(guān)系

數(shù)量上:一個(gè)多進(jìn)程模式下的Swoole Server中,有且只有一個(gè)Master進(jìn)程;有且只有一個(gè)Manager進(jìn)程;卻可以有n個(gè)Worker進(jìn)程。

swoole進(jìn)程結(jié)構(gòu)圖:


第一層,Master進(jìn)程,這個(gè)是swoole的主進(jìn)程,這個(gè)進(jìn)程是用于處理swoole的核心事件驅(qū)動(dòng)的,那么在這個(gè)進(jìn)程當(dāng)中可以看到它擁有一個(gè)MainReactor[線程]以及若干個(gè)Reactor[線程],swoole所有對(duì)于事件的監(jiān)聽(tīng)都會(huì)在這些線程中實(shí)現(xiàn),比如來(lái)自客戶端的連接,信號(hào)處理等。

Master、Manage、Worker、Task四種進(jìn)程之間是怎么協(xié)作的:
1、Client主動(dòng)Connect的時(shí)候,Client實(shí)際上是與Master進(jìn)程中的某個(gè)Reactor線程發(fā)生了連接。
2、當(dāng)TCP的三次握手成功了以后,由這個(gè)Reactor線程將連接成功的消息告訴Manager進(jìn)程,再由Manager進(jìn)程轉(zhuǎn)交給Worker進(jìn)程。
3、在這個(gè)Worker進(jìn)程中觸發(fā)了OnConnect的方法。
4、當(dāng)Client向Server發(fā)送了一個(gè)數(shù)據(jù)包的時(shí)候,首先收到數(shù)據(jù)包的是Reactor線程,同時(shí)Reactor線程會(huì)完成組包,再將組好的包交給Manager進(jìn)程,由Manager進(jìn)程轉(zhuǎn)交給Worker。
5、此時(shí)Worker進(jìn)程觸發(fā)OnReceive事件。
6、如果在Worker進(jìn)程中做了什么處理,然后再用Send方法將數(shù)據(jù)發(fā)回給客戶端時(shí),數(shù)據(jù)則會(huì)沿著這個(gè)路徑逆流而上。
7、Task進(jìn)程主要處理一些占用時(shí)間較長(zhǎng)的業(yè)務(wù),主要處理Worker進(jìn)程中占時(shí)較長(zhǎng)的一些任務(wù)。
注:Task進(jìn)程理解

形象的例子:
Master進(jìn)程就像業(yè)務(wù)窗口的,Reactor就是前臺(tái)接待員,用戶很多的時(shí)候,后邊的用戶就需要排隊(duì)等待服務(wù);Reactor負(fù)責(zé)與客戶直接溝通,對(duì)客戶的請(qǐng)求進(jìn)行初步的整理(傳輸層級(jí)別的整理——組包);然后,Manager進(jìn)程就是類似項(xiàng)目經(jīng)理的角色,要負(fù)責(zé)將業(yè)務(wù)分配給合適的Worker(例如空閑的Worker);而Worker進(jìn)程就是工人,負(fù)責(zé)實(shí)現(xiàn)具體的業(yè)務(wù)。

三、多進(jìn)程的基本配置

<?php$server->set([    "daemonize"=>true,    "reactor_num"=>2,    "worker_num"=>4,]);$server -> start();
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

reactor_num:表示Master進(jìn)程中,Reactor線程總共開(kāi)多少個(gè),注意,這個(gè)可不是越多越好,因?yàn)橛?jì)算機(jī)的CPU是有限的,所以一般設(shè)置為與CPU核心數(shù)量相同,或者四倍即可。
worker_num:表示啟動(dòng)多少個(gè)Worker進(jìn)程,同樣,Worker進(jìn)程數(shù)量不是越多越好,仍然設(shè)置為與CPU核心數(shù)量相同,或者兩倍即可。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【Swoole系列3.2】Swoole 異步進(jìn)程服務(wù)系統(tǒng)
PHP并發(fā)IO編程之路[轉(zhuǎn)]
(1)swoole教程第一節(jié):進(jìn)程管理模塊(Process)
PHP開(kāi)發(fā)者的福音,解讀PHP異步通信框架Swoole的機(jī)制
當(dāng)我們?cè)谡務(wù)摳卟l(fā)的時(shí)候究竟在談什么?
要學(xué)swoole看這個(gè) 比看文檔強(qiáng)多了 (文末有福利)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服