PHP方向+go+rpc+swoole,瞅瞅 PHP+Swoole 作为网络通信框架
這里瞅瞅Swoole框架,因為說的比較屌,官網(wǎng)里面文檔比較多https://www.swoole.com/
代碼地址(https://gitee.com/swoole/swoole)
這里先復(fù)制他的說明(https://wiki.swoole.com/)
Swoole底層內(nèi)置了異步非阻塞、多線程的網(wǎng)絡(luò)IO服務(wù)器。PHP程序員僅需處理事件回調(diào)即可,無需關(guān)心底層。與Nginx/Tornado/Node.js等全異步的框架不同,Swoole既支持全異步,也支持同步。
除了異步IO的支持之外,Swoole為PHP多進(jìn)程的模式設(shè)計了多個并發(fā)數(shù)據(jù)結(jié)構(gòu)和IPC通信機(jī)制,可以大大簡化多進(jìn)程并發(fā)編程的工作。其中包括了并發(fā)原子計數(shù)器,并發(fā)HashTable,Channel,Lock,進(jìn)程間通信IPC等豐富的功能特性。
Swoole從2.0版本開始支持了
在已經(jīng)安裝的php環(huán)境下面需要安裝一下?Swoole 擴(kuò)展,在文檔中說明了各種系統(tǒng)的,我這里記錄一下自己這邊的操作,mac下用的brew 包管理:
然后看看我的 php 版本,選擇安裝不同的拓展,這邊安裝 brew install homebrew/php/php71-swoole,但我這里已經(jīng)安裝好了,如果失敗,也通過源碼安裝brew reinstall php71-swoole --build-from-source
然后需要php.ini 中添加 extension = swoole.so,使用 php -m 看拓展有沒有生效,如果沒生效可以試試重啟 apache 服務(wù)器。
下面寫個demo 試試:
$serv = new swoole_server("127.0.0.1", 9501);
$serv->on('connect', function ($serv, $fd){
echo "Client:Connect.\n";
});
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
$serv->send($fd, 'Swoole: '.$data);
$serv->close($fd);
});
$serv->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
$serv->start();
客戶端:
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->on("connect", function($cli) {
$cli->send("hello world\n");
});
$client->on("receive", function($cli, $data = ""){
echo "Receive: ".$data.PHP_EOL;
});
$client->on("error", function($cli){
echo "connect fail\n";
});
$client->on("close", function($cli){
echo "connection close\n";
});
$client->connect('127.0.0.1', 9501, 0.5);
然后需要在php-cli環(huán)境下執(zhí)行:
文檔里面有一張圖,可以幫助我們理解
參考:
https://www.gitbook.com/book/linkeddestiny/easy-swoole/details
https://wiki.swoole.com/wiki/page/1.html
未完待續(xù)!!!!
有什么討論的內(nèi)容,可以加我微信公眾號:
總結(jié)
以上是生活随笔為你收集整理的PHP方向+go+rpc+swoole,瞅瞅 PHP+Swoole 作为网络通信框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英特尔cpu发布时间表_英特尔10nm芯
- 下一篇: 噪声产生原因_空调噪声大?啄木鸟家庭维修