linux 安装 swoole扩展

来源:互联网 发布:C语言韩信点兵 编辑:程序博客网 时间:2024/06/05 02:05

swoole的官网请见:http://www.swoole.com/

Swoole是:PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole虽然是标准的PHP扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。而swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后,swoole会自动回调指定的PHP函数。

安装步骤:

1-> wget https://github.com/swoole/swoole-src/archive/v1.9.21.zip

2->unzip  v1.9.21.zip   //解压

3>tar -zxvf swoole-1.7.6-stable.tar.gz        //解压swoole

4>cd swoole-src-swoole-1.7.6-stable/        //进入swoole

5>/phpstudy/server/php/bin/phpize        //生成configure

6>./configure --with-php-config=/phpstudy/server/php/bin/php-config        //编译

7>make && make install            //安装

8>vim /phpstudy/server/php/etc/php.ini     //在php.ini添加extension=swoole.so加入到文件最后一行

9>/phpstudy/server/nginx/sbin/nginx  -s reload    //重启nginx    

10>查看phpinfo,这时候swoole拓展已经装上了 或者 php -m 看看是否有swoole这个扩展


测试使用:

service.php

[php] view plain copy
  1. <?php  
  2. $reqs=array(); //保持客户端的长连接在这个数组里  
  3. $serv = new swoole_websocket_server("192.168.2.115", 9502);  
  4. //如下可以设置多端口监听  
  5. //$server = new swoole_websocket_server("0.0.0.0", 9501, SWOOLE_BASE);  
  6. //$server->addlistener('0.0.0.0', 9502, SWOOLE_SOCK_UDP);  
  7. //$server->set(['worker_num' => 4]);  
  8.   
  9. $serv->on('Open'function($server$req) {  
  10.     global $reqs;  
  11.     $reqs[]=$req->fd;  
  12.     echo "connection open: ".$req->fd."\n";  
  13.     var_dump(count($reqs));//输出长连接数  
  14. });  
  15.   
  16. $serv->on('Message'function($server$frame) {  
  17.     global $reqs;  
  18.     echo "message: ".$frame->data."\n";  
  19.     foreach($reqs as $fd){  
  20.             $server->push($fd$frame->data);  
  21.     }  
  22. });  
  23.   
  24. $serv->on('Close'function($server$fd) {  
  25.     echo "connection close: ".$fd."\n";  
  26. });  
  27.   
  28. $serv->start();  

开启service这个文件

[php] view plain copy
  1. php server.php  


客户端



在浏览器console里运行:

[php] view plain copy
  1. var wsl= 'ws://192.168.2.115:9502'  
  2. ws = new WebSocket(wsl);//新建立一个连接  
  3. //如下指定事件处理   
  4. ws.onopen = function(){ws.send('Test!'); };    
  5. ws.onmessage = function(evt){console.log(evt.data);/*ws.close();*/};    
  6. ws.onclose = function(evt){console.log('WebSocketClosed!');};    
  7. ws.onerror = function(evt){console.log('WebSocketError!');};   

在任意浏览器console里手动执行:(关闭)

ws.send(888);//看每个浏览器的内容console输出应该是一样的就实验在成功了ws.close();//关闭连接
原创粉丝点击