swoole 异步非堵塞 server/端 client/端 代码,已经测试完毕。
服务器环境 centos7.0 swoole4.3 php7.2 pcre4.8 nginx1.8 php-fpm
server.php
<?php
class Server
{
private $serv;
public function __construct() {
$this->serv = new swoole_server("0.0.0.0", 9501);
$this->serv->set(array(
'worker_num' => 8,
'daemonize' => false,
'max_request' => 10000,
'dispatch_mode' => 2,
'debug_mode'=> 1
));
$this->serv->on('Start', array($this, 'onStart'));
$this->serv->on('Connect', array($this, 'onConnect'));
//$this->serv->on('Message', array($this, 'onMessage'));
$this->serv->on('Receive', array($this, 'onReceive'));
$this->serv->on('Close', array($this, 'onClose'));
$this->serv->start();
}
public function onStart( $serv ) {
echo "Start\n";
}
public function onConnect( $serv, $fd, $from_id ) {
$serv->send( $fd, "收到 {$fd}!" );
}
// public function onMessage( $serv, $fd, $from_id ) {
// $serv->send( $fd, "Hello {$fd}!我已经收到你的信息" );
// }
public function onReceive( $serv, $fd, $from_id, $data ) {
echo "Get Message From Client {$fd}:{$data}\n";
$serv->send( $fd, "Hello {$fd}!我收到了你的信息!{$data}" );
}
public function onClose( $serv, $fd, $from_id ) {
echo "Client {$fd} close connection\n";
}
}
// 启动服务器
$server = new Server();
?>
client.php 异步 非阻塞
<?php
$client = new swoole_client(SWOOLE_TCP | SWOOLE_ASYNC); //异步非阻塞
$client->on("connect", function($cli) {
$cli->send("hello world\n");
});
$client->on("receive", function($cli, $data) {
echo "received: $data\n";
//sleep(1);
fwrite(STDOUT, "请输入消息:");
$msg = trim(fgets(STDIN));
$cli->send( $msg );
});
$client->on("close", function($cli){
echo "closed\n";
});
$client->on("error", function($cli){
exit("error\n");
});
$client->connect('0.0.0.0', 9501, 0.5);
?>
测试 结果

同步,异步,阻塞和非阻塞 ----概念
同步,异步,阻塞和非阻塞,会组合成上面提到过的四种结果:
(一)同步+阻塞
(二)同步+非阻塞
(三)异步+阻塞
(四)异步+非阻塞
举个例子,比如我们去照相馆拍照,拍完照片之后,商家说需要30分钟左右才能洗出来照片,
这个时候如果我们一直在店里面啥都不干,一直等待商家面前等待它洗完照片,这个过程就叫同步阻塞。
当然大部分人很少这么干,更多的是大家拿起手机开始看电视,看一会就会问老板洗完没,老板说没洗完,然后我们接着看,再过一会接着问,直到照片洗完,这个过程就叫同步非阻塞。
因为店里生意太好了,越来越多的人过来拍,店里面快没地方坐了,老板说你把你手机号留下,我一会洗好了就打电话告诉你过来取,然后你去外面找了一个长凳开始躺着睡觉等待老板打电话,啥不都干,这个过程就叫异步阻塞。
当然实际情况是,大家可能会直接先去逛街或者吃饭做其他的活动,这样以来两不耽误,这个过程就叫异步非阻塞


浙公网安备 33010602011771号