版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 項(xiàng)目合作運(yùn)營(yíng)方案案例
- 景區(qū)拓展基地運(yùn)營(yíng)方案
- 酒店運(yùn)營(yíng)方案及策劃
- 景區(qū)運(yùn)營(yíng)公司方案
- 婦幼生活廣場(chǎng)運(yùn)營(yíng)方案
- 無(wú)極運(yùn)營(yíng)方案效果評(píng)估
- 運(yùn)營(yíng)解答與推廣方案范文
- 海航信托運(yùn)營(yíng)方案設(shè)計(jì)
- 鋼琴銷售運(yùn)營(yíng)方案策劃
- 系統(tǒng)運(yùn)營(yíng)維護(hù)技術(shù)方案
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評(píng)規(guī)范
- 2026長(zhǎng)治日?qǐng)?bào)社工作人員招聘勞務(wù)派遣人員5人備考題庫(kù)及答案1套
- 機(jī)動(dòng)車駕校安全培訓(xùn)課件
- 河道清淤作業(yè)安全組織施工方案
- 2025年役前訓(xùn)練考試題庫(kù)及答案
- 2026年七臺(tái)河職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 2021海灣消防 GST-LD-8318 緊急啟停按鈕使用說(shuō)明書
- 煙花爆竹零售經(jīng)營(yíng)安全責(zé)任制度
- 2023年和田地區(qū)直遴選考試真題匯編含答案解析(奪冠)
- ICG熒光導(dǎo)航在肝癌腹腔鏡解剖性肝切除中的應(yīng)用2026
- 城市軌道交通服務(wù)與管理崗位面試技巧
評(píng)論
0/150
提交評(píng)論