swoole進(jìn)程間怎么通信

這篇文章給大家分享的是有關(guān)swoole進(jìn)程間怎么通信的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)是專業(yè)的友誼網(wǎng)站建設(shè)公司,友誼接單;提供網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行友誼網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

Swoole進(jìn)程間通信的方式

管道pipe

管道用于進(jìn)程之間的數(shù)據(jù)交互,Linux系統(tǒng)本身提供了pipe函數(shù)用于創(chuàng)建一個(gè)半雙工通信管道。半雙工的通信方式中數(shù)據(jù)只能單向流動(dòng)(一端只讀一端只寫),只能在具有親緣關(guān)系(父子進(jìn)程)的進(jìn)程之間使用。

管道是進(jìn)程間通信IPC中最基礎(chǔ)的方式,管道有兩種類型分別是命名管道、匿名管道。

匿名管道:專門用于具有血緣關(guān)系的進(jìn)程之間,完成數(shù)據(jù)傳遞。命名管道:可以用在任何兩個(gè)進(jìn)程之間,Swoole中的管道都是匿名管道。

在Swoole中利用eventfd和UnixSock封裝了兩種管道,使得進(jìn)程之間的通信更加靈活。

Swoole的Process模塊內(nèi)置了管道的方式用于進(jìn)程間通信,在構(gòu)建Process實(shí)例時(shí)只要開啟了$pipe_type選項(xiàng),Swoole底層會(huì)自動(dòng)創(chuàng)建一個(gè)管道,這里需要說明的時(shí),雖然名字上叫做管道,但實(shí)際上在新版Swoole中底層通信是通過UnixSock實(shí)現(xiàn)的,所以并不是真正意義上的Linux Pipe。

創(chuàng)建進(jìn)程

swoole_process::__construct(
callable $function, 
bool $redirect_stdin_stdout = false, 
int $pipe_type = SOCK_DGRAM, 
bool $enable_coroutine = false
);

管道類型$pipe_type可分為三種:

0表示不創(chuàng)建管道

1表示創(chuàng)建SOCK_STREAM類型的管道

2表示創(chuàng)建SOCK_DGRAM類型的管道

當(dāng)啟用$redirect_stdin_stdout后,$pipe_type選項(xiàng)將忽略用戶參數(shù),強(qiáng)制為1。

管道描述符

當(dāng)進(jìn)程被fork出來后,父進(jìn)程和子進(jìn)程中的Process對(duì)象會(huì)被設(shè)置上一個(gè)名為pipe的成員變量,存放著底層UnixSocket的描述符,父進(jìn)程和子進(jìn)程可以通過這個(gè)管道描述符來發(fā)送數(shù)據(jù),也可以直接調(diào)用Process提供的read/write接口來收發(fā)數(shù)據(jù)。

object(Swoole\Process)#1 (6) {
  ["pipe"]=>int(4)
  ["callback"]=>NULL
  ["msgQueueId"]=>NULL
  ["msgQueueKey"]=>NULL
  ["pid"]=>int(287)
  ["id"]=>NULL}

管道讀寫

swoole_process->write(string $data) 向進(jìn)程的管道中寫入數(shù)據(jù)

swoole_process->read(int $buffer_size = 8192) 從進(jìn)程的管道中讀取數(shù)據(jù)

感謝各位的閱讀!關(guān)于swoole進(jìn)程間怎么通信就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)站題目:swoole進(jìn)程間怎么通信
分享URL:http://bm7419.com/article14/gosoge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版用戶體驗(yàn)、網(wǎng)站排名動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)