Linux下源碼包安裝Swoole及基本使用操作圖文詳解_第1頁(yè)
Linux下源碼包安裝Swoole及基本使用操作圖文詳解_第2頁(yè)
Linux下源碼包安裝Swoole及基本使用操作圖文詳解_第3頁(yè)
Linux下源碼包安裝Swoole及基本使用操作圖文詳解_第4頁(yè)
Linux下源碼包安裝Swoole及基本使用操作圖文詳解_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Linux下源碼包安裝Swoole及基本使用操作圖文詳解本文實(shí)例講述了Linux下源碼包安裝Swoole及基本使用操作。分享給大家供大家參考,具體如下:

下載SwoolePECL擴(kuò)展源碼包:/package/swoole

關(guān)于PHP版本依賴選擇:

下載好放到/usr/local/src下,解壓縮:

tar-zxvfswoole-2.2.0.tgz

準(zhǔn)備擴(kuò)展安裝編譯環(huán)境:

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擴(kuò)展已經(jīng)安裝成功:

查看phpinfo信息:

(測(cè)試前說(shuō)明:以下使用的端口,要確認(rèn)服務(wù)器放行,寶塔環(huán)境還需要添加安全組規(guī)則)

【創(chuàng)建TCP服務(wù)器】

創(chuàng)建server.php:

//創(chuàng)建Server對(duì)象,監(jiān)聽(tīng):9501端口

$serv=newswoole_server("",9501);

//監(jiān)聽(tīng)連接進(jìn)入事件

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

echo"Client:Connect.\n";

//監(jiān)聽(tīng)數(shù)據(jù)接收事件

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

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

//監(jiān)聽(tīng)連接關(guān)閉事件

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

echo"Client:Close.\n";

//啟動(dòng)服務(wù)器

$serv-start();

啟動(dòng)TCP服務(wù):

phpserver.php

查看9501端口已被監(jiān)聽(tīng):

netstat-an|grep9501

使用telnet連接TCP服務(wù),輸入hello,服務(wù)器返回hello即測(cè)試成功:

telnet9501

(如果telnet工具沒(méi)有安裝,執(zhí)行yuminstalltelnet、yuminstalltelnet-server)

也可以寫一個(gè)TCP客戶端連接TCP服務(wù)器端:

創(chuàng)建tcp_client.php:

//創(chuàng)建Client對(duì)象,監(jiān)聽(tīng):9501端口

$client=newswoole_client(SWOOLE_SOCK_TCP);

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

echo"連接失敗";

exit;

//向tcp服務(wù)器發(fā)送消息

fwrite(STDOUT,"請(qǐng)輸入:");

$msg=trim(fgets(STDIN));

$client-send($msg);

//接受tcp服務(wù)器消息

$result=$client-recv();

echo$result;

啟動(dòng)tcp客戶端:

phptcp_client.php

測(cè)試結(jié)果:

【創(chuàng)建UDP服務(wù)器】

創(chuàng)建udp_server.php:

//創(chuàng)建Server對(duì)象,監(jiān)聽(tīng):9502端口,類型為SWOOLE_SOCK_UDP

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

//監(jiān)聽(tīng)數(shù)據(jù)接收事件

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

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

var_dump($clientInfo);

//啟動(dòng)服務(wù)器

$serv-start();

啟動(dòng)UDP服務(wù):

phpudp_server.php

查看9502端口已被監(jiān)聽(tīng):

netstat-an|grep9502

使用netcat連接UDP服務(wù),輸入hello,服務(wù)器返回hello即測(cè)試成功(CentOS):

nc-u9502

(如果沒(méi)有安裝netcat監(jiān)聽(tīng)器,執(zhí)行yuminstall-ync)

【創(chuàng)建Web服務(wù)器】

創(chuàng)建http_server.php:

$http=newswoole_http_server("",9501);

//配置靜態(tài)文件根目錄(可選)

$http-set([

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

'enable_static_handler'=true,

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

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

//設(shè)置header

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

//設(shè)置cookie

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

//發(fā)送Http響應(yīng)體,并結(jié)束請(qǐng)求處理。

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

$http-start();

啟動(dòng)服務(wù):

phphttp_server.php

(如果9501端口已經(jīng)被占用查看進(jìn)程PID,殺死進(jìn)程:)

lsof-i:9501

kill9013

瀏覽器訪問(wèn)主機(jī)地址:端口號(hào),得到程序預(yù)期結(jié)果即測(cè)試成功:

【創(chuàng)建WebSocket服務(wù)器】

創(chuàng)建ws_server.php:

//創(chuàng)建websocket服務(wù)器對(duì)象,監(jiān)聽(tīng):9501端口

$ws=newswoole_websocket_server("",9501);

//配置靜態(tài)文件根目錄(可選)

$ws-set([

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

'enable_static_handler'=true,

//監(jiān)聽(tīng)WebSocket連接打開(kāi)事件

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

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

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

//監(jiān)聽(tīng)WebSocket消息事件

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

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

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

//監(jiān)聽(tīng)WebSocket連接關(guān)閉事件

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

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

$ws-start();

運(yùn)行程序:(這里還是要確認(rèn)監(jiān)聽(tīng)的端口沒(méi)有被占用,如果被占用查看進(jìn)程PID,殺死進(jìn)程)

phpws_server.php

前端頁(yè)面js監(jiān)聽(tīng):(改成你的主機(jī)地址)

!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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論