Swoole异步通信No.2
一、客户端代码
<?php
$client = new swoole_client(SWOOLE_SOCK_TCP);
//连接到服务器
if (!$client->connect('127.0.0.1', 9501, 0.5))
{
die("connect failed.");
}
$message="这里是客户端发送给服务端的数据";
//向服务器发送数据
$client->send($message);
//从服务器接收数据
$data = $client->recv();
echo $data;
//关闭连接
$client->close();
二、服务端代码
<?php
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new swoole_server("127.0.0.1", 9501);
$serv->set(array(
'reactor_num' => 2, //reactor thread num
'worker_num' => 4, //worker process num
'backlog' => 128, //listen backlog
));
//监听连接进入事件
$serv->on('connect', function ($serv, $fd,$reactor_id) {
echo "Client: Connect.\n";
});
//监听数据接收事件
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
//这里可以接收客户端发过来的数据($data),$fd(客户端标识),
//写业务逻辑然后给客户端推送消息
$serv->send($fd, "Server: ".$data);
});
//监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
//启动服务器
$serv->start();
三、操作场景
- 发送一个请求不需要等待,比如下单,发送邮件。
- 终端启动服务端代码(php server.php)
- 客户端放在自己需要异步通信的业务里面,调用即可。