同步和异步
- 概念
同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式。
同步: 当一个同步调用发出去后,调用者要一直等待调用结果的通知后,才能进行后续的执行。
异步: 当一个异步调用发出去后,调用者不能立即得到调用结果的返回。
生活中的例子:
同步买奶茶:小明点单交钱,然后等着拿奶茶;
异步买奶茶:小明点单交钱,店员给小明一个小票,等小明奶茶做好了,再来取。
- 服务端
//创建Server对象,监听 0.0.0.0(所有客户端):9501端口
$host = "0.0.0.0";
$server = new Swoole\Server($host, 2538);
//监听连接进入事件
$server->on('Connect', function ($serv, $fd) {
echo "Client:新的客户端进入 Connect.".date('Y-m-d H:i:s')."\n";
});
//监听数据接收事件
$server->on('Receive', function ($serv, $fd, $from_id, $data) {
echo '我是服务端,接收到了'.$data;
$serv->send($fd, "Server把数据返回给你: "."server发送过来的".$data);
});
//监听连接关闭事件
$server->on('Close', function ($serv, $fd) {
echo "Client: Close.\n";
});
echo "tcp:101.200.217.212";
$server->set([
'worker_num'=>1#设置进程数目
]);
//启动服务器
$server->start();
- 同步客户端
//同步客户端 代码示例
$client = new Swoole\Client(SWOOLE_SOCK_TCP);
if (!$client->connect('127.0.0.1', 2538,3)) {
exit("connect failed. Error: {$client->errCode}\n");