
Swoole行程間通信的方式
管道pipe
管道用于行程之間的資料互動,Linux系統本身提供了pipe函式用于創建一個半雙工通信管道,半雙工的通信方式中資料只能單向流動(一端只讀一端只寫),只能在具有親緣關系(父子行程)的行程之間使用,
管道是行程間通信IPC中最基礎的方式,管道有兩種型別分別是命名管道、匿名管道,
匿名管道:專門用于具有血緣關系的行程之間,完成資料傳遞,命名管道:可以用在任何兩個行程之間,Swoole中的管道都是匿名管道,
在Swoole中利用eventfd和UnixSock封裝了兩種管道,使得行程之間的通信更加靈活,
Swoole的Process模塊內置了管道的方式用于行程間通信,在構建Process實體時只要開啟了$pipe_type選項,Swoole底層會自動創建一個管道,這里需要說明的時,雖然名字上叫做管道,但實際上在新版Swoole中底層通信是通過UnixSock實作的,所以并不是真正意義上的Linux Pipe,
創建行程

管道型別$pipe_type可分為三種:
0表示不創建管道
1表示創建SOCK_STREAM型別的管道
2表示創建SOCK_DGRAM型別的管道
當啟用$redirect_stdin_stdout后,$pipe_type選項將忽略用戶引數,強制為1,
管道描述符
當行程被fork出來后,父行程和子行程中的Process物件會被設定上一個名為pipe的成員變數,存放著底層UnixSocket的描述符,父行程和子行程可以通過這個管道描述符來發送資料,也可以直接呼叫Process提供的read/write介面來收發資料,

管道讀寫
swoole_process->write(string $data) 向行程的管道中寫入資料
swoole_process->read(int $buffer_size = 8192) 從行程的管道中讀取資料
以上就是swoole行程間如何通信的詳細內容,更多請關注我吧
有需要學習交流的友人請加入Swoole交流群的咱們一起,有問題一起交流,一起進步!前提是你是學技術的,感謝閱讀!
點此加入該群?jq.qq.com
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/102132.html
標籤:PHP
上一篇:[Linux] ubuntu環境安裝和使用elasticsearch
下一篇:php有必要用swoole嗎
