centos安装php扩展swoole及简单使用
websocket
Websocket只是一个网络通信协议,就像 http、ftp等都是网络通信的协议一样;
相对于HTTP这种非持久的协议来说,Websocket是一个持久化网络通信的协议;
WebSocket和HTTP的关系
WebSocket和HTTP的关系
有交集,但是并不是全部。
Websocket只是借用了HTTP的一部分协议来完成一次握手。(HTTP的三次握手(类似TCP),此处只完成一次)
WebSocket的原理。
这时Websocket出现了。
他解决了HTTP的这几个难题。
首先,被动性,当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端啦。
所以上面的情景可以做如下修改。
客户端:啦啦啦,我要建立Websocket协议,需要的服务:chat,Websocket协议版本:17(HTTP
Request)
服务端:ok,确认,已升级为Websocket协议(HTTP
Protocols Switched)
客户端:麻烦你有信息的时候推送给我噢。。
服务端:ok,有的时候会告诉你的。
服务端:balabalabalabala
服务端:balabalabalabala
服务端:哈哈哈哈哈啊哈哈哈哈
服务端:笑死我了哈哈哈哈哈哈哈
但是Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了接线员要反复解析HTTP协议,还要查看identity info的信息。
同时由客户主动询问,转换为服务器(推送)有信息的时候就发送(当然客户端还是等主动发送信息过来的。。),没有信息的时候就交给接线员(Nginx),不需要占用本身速度就慢的客服(Handler)了
php安装swoole
1. 下载swoole安装
wget http://pecl.php.net/get/swoole-1.9.1.tgz
tar -zxvf swoole-1.9.1.tgz
cd swoole-1.9.1
phpize
./configure
make
make install
2. 在php.ini添加swoole.so
extension=swoole.so
php -m查看是否安装成功
3.PHP版本依赖
- swoole仅支持PHP5.3.10或更高版本,建议使用PHP5.4+
- swoole不依赖php的stream、sockets、pcntl、posix、sysvmsg等扩展。PHP只需安装最基本的扩展即可
4、代码测试
注意事项:
1、server.php中的ip地址必须是外网可访问地址 123.57.232.99,不能为localhost
server.php代码:
<?php
$serv = new swoole_server("123.57.232.99", 55152);
$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->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
$serv->start();
?>
client.php代码
<?php
$client = new swoole_client(SWOOLE_SOCK_TCP);
if (!$client->connect('123.57.232.99', 55152, -1))
{
exit("connect failed. Error: {$client->errCode}\n");
}
$client->send("hello world\n");
echo $client->recv();
$client->close();
?>
首先启动服务:
[[email protected] swoole]# php server.php
Client:Connect.
然后Linux终端
telnet测试
# telnet 123.57.232.99 55152
Trying 123.57.232.99...
Connected to 123.57.232.99.
Escape character is '^]'.
rr
Swoole: rr
测试
Swoole: 测试