php swoole 通信,PHP+Swoole 作为网络通信框架

Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调即可,无需关心底层。与Nginx/Tornado/Node.js等全异步的框架不同,Swoole既支持全异步,也支持同步。

除了异步IO的支持之外,Swoole为PHP多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。其中包括了并发原子计数器,并发HashTable,Channel,Lock,进程间通信IPC等丰富的功能特性。

Swoole从2.0版本开始支持了内置协程,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步。

在已经安装的php环境下面需要安装一下 Swoole 扩展,在文档中说明了各种系统的,我这里记录一下自己这边的操作,mac下用的brew 包管理:

855e6ae6f1fffba2c17d46e02420325b.png

然后看看我的 php 版本,选择安装不同的拓展,这边安装 brew install homebrew/php/php71-swoole,但我这里已经安装好了,如果失败,也通过源码安装brew reinstall php71-swoole --build-from-source

b6771dd73c5eedf99bc496370892d223.png

然后需要php.ini 中添加 extension = swoole.so,使用 php -m 看拓展有没有生效,如果没生效可以试试重启 apache 服务器。

a909e1b63d5b3a7f2fe994ea128fffe3.png

下面写个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环境下执行:

d840bc7d56cd640a5027dbb1e8fb8421.png

618bafc666e5cbc13f0360e2e942ce7c.png

文档里面有一张图,可以帮助我们理解

bbff9346df467e9c05cffa616b7054e8.png

原文:https://www.cnblogs.com/wadhf/p/11827954.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值