Linux下源码包安装Swoole及基本使用操作图文详解_第1页
Linux下源码包安装Swoole及基本使用操作图文详解_第2页
Linux下源码包安装Swoole及基本使用操作图文详解_第3页
Linux下源码包安装Swoole及基本使用操作图文详解_第4页
Linux下源码包安装Swoole及基本使用操作图文详解_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Linux下源码包安装Swoole及基本使用操作图文详解本文实例讲述了Linux下源码包安装Swoole及基本使用操作。分享给大家供大家参考,具体如下:

下载SwoolePECL扩展源码包:/package/swoole

关于PHP版本依赖选择:

下载好放到/usr/local/src下,解压缩:

tar-zxvfswoole-2.2.0.tgz

准备扩展安装编译环境:

phpize

查看php-config位置:

find/-namephp-config

配置:(--with-php-config==后面是你自己的php-config位置)

./configure--with-php-config=/www/server/php/72/bin/php-config

编译安装:

makemakeinstall

在php.ini里面加一行:

extension=swoole.so

使用php-m命令查看swoole扩展已经安装成功:

查看phpinfo信息:

(测试前说明:以下使用的端口,要确认服务器放行,宝塔环境还需要添加安全组规则)

【创建TCP服务器】

创建server.php:

//创建Server对象,监听:9501端口

$serv=newswoole_server("",9501);

//监听连接进入事件

$serv-on('connect',function($serv,$fd){

echo"Client:Connect.\n";

//监听数据接收事件

$serv-on('receive',function($serv,$fd,$from_id,$data){

$serv-send($fd,"Server:".$data);

//监听连接关闭事件

$serv-on('close',function($serv,$fd){

echo"Client:Close.\n";

//启动服务器

$serv-start();

启动TCP服务:

phpserver.php

查看9501端口已被监听:

netstat-an|grep9501

使用telnet连接TCP服务,输入hello,服务器返回hello即测试成功:

telnet9501

(如果telnet工具没有安装,执行yuminstalltelnet、yuminstalltelnet-server)

也可以写一个TCP客户端连接TCP服务器端:

创建tcp_client.php:

//创建Client对象,监听:9501端口

$client=newswoole_client(SWOOLE_SOCK_TCP);

if(!$client-connect("",9501)){

echo"连接失败";

exit;

//向tcp服务器发送消息

fwrite(STDOUT,"请输入:");

$msg=trim(fgets(STDIN));

$client-send($msg);

//接受tcp服务器消息

$result=$client-recv();

echo$result;

启动tcp客户端:

phptcp_client.php

测试结果:

【创建UDP服务器】

创建udp_server.php:

//创建Server对象,监听:9502端口,类型为SWOOLE_SOCK_UDP

$serv=newswoole_server("",9502,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);

//监听数据接收事件

$serv-on('Packet',function($serv,$data,$clientInfo){

$serv-sendto($clientInfo['address'],$clientInfo['port'],"Server".$data);

var_dump($clientInfo);

//启动服务器

$serv-start();

启动UDP服务:

phpudp_server.php

查看9502端口已被监听:

netstat-an|grep9502

使用netcat连接UDP服务,输入hello,服务器返回hello即测试成功(CentOS):

nc-u9502

(如果没有安装netcat监听器,执行yuminstall-ync)

【创建Web服务器】

创建http_server.php:

$http=newswoole_http_server("",9501);

//配置静态文件根目录(可选)

$http-set([

'document_root'='/www/wwwroot/lwsblog',

'enable_static_handler'=true,

$http-on('request',function($request,$response){

var_dump($request-get,$request-post);

//设置header

$response-header("Content-Type","text/html;charset=utf-8");

//设置cookie

$response-cookie("name","lws",time()+3600);

//发送Http响应体,并结束请求处理。

$response-end("h1HelloSwoole.#".rand(1000,9999)."/h1

$http-start();

启动服务:

phphttp_server.php

(如果9501端口已经被占用查看进程PID,杀死进程:)

lsof-i:9501

kill9013

浏览器访问主机地址:端口号,得到程序预期结果即测试成功:

【创建WebSocket服务器】

创建ws_server.php:

//创建websocket服务器对象,监听:9501端口

$ws=newswoole_websocket_server("",9501);

//配置静态文件根目录(可选)

$ws-set([

'document_root'='/www/wwwroot/lwsblog',

'enable_static_handler'=true,

//监听WebSocket连接打开事件

$ws-on('open',function($ws,$request){

var_dump($request-fd,$request-get,$request-server);

$ws-push($request-fd,"hello,welcome\n");

//监听WebSocket消息事件

$ws-on('message',function($ws,$frame){

echo"Message:{$frame-data}\n";

$ws-push($frame-fd,"server:{$frame-data}");

//监听WebSocket连接关闭事件

$ws-on('close',function($ws,$fd){

echo"client-{$fd}isclosed\n";

$ws-start();

运行程序:(这里还是要确认监听的端口没有被占用,如果被占用查看进程PID,杀死进程)

phpws_server.php

前端页面js监听:(改成你的主机地址)

!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"

htmlxmlns="/1999/xhtml"

head

titleWebSocket/title

/head

body

/body

scripttype="text/javascript"

varwsServer='ws://:9501';

varwebsocket=newWebSocket(wsServer);

websocket.onopen=function(evt){

console.log("ConnectedtoWebSocketserver.");

websocket.onclose=function(evt){

console.log("Disconnected");

websocket.onmessage=function(evt){

console.log('Retrieveddatafromserver:'+evt.data);

websocket.onerror=function(evt,e){

console.log('Erroroccured:'+evt.data);

/script

/html

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论