1 查看swoole進(jìn)程
ps? -aux | grep swoole
0:0:0:0?全局沒有限制
127.0.0.1?當(dāng)前電腦能查看
192.168:255:255?本地局域網(wǎng)
2 異常問題
訪問異常:防火墻,服務(wù)未開啟?ip地址錯(cuò)誤
運(yùn)行異常:swoole沒有安裝成功,代碼錯(cuò)誤
進(jìn)程查詢?ps -aux? 文件名.php? ? 或者?php -aux *.php
安裝異常,查詢環(huán)境配置?
3?同步和異步
同步:執(zhí)行任務(wù)的時(shí)候必須是一步一步的執(zhí)行,不能同時(shí)執(zhí)行2個(gè)任務(wù),比如?走路的時(shí)候不能看書,看書的時(shí)候不能走路?事情只能一件一件的做
異步:執(zhí)行任務(wù)時(shí),可以同時(shí)執(zhí)行,比如走路時(shí)看書,看書的時(shí)候聽歌,事情可以同時(shí)做
同步:常見于隊(duì)列,必須一個(gè)一個(gè)的執(zhí)行?事例:下單操作防止超賣
異步:常見于消息發(fā)送,?事情不一定立即執(zhí)行,事例:下單完后給用戶發(fā)送消息
4?swoole加速框架
http-server服務(wù)?可以用于web項(xiàng)目開發(fā),也可以用于laravel和thinkPHP框架進(jìn)行加速
使用swoole加速框架 ,框架必須是IOC類型,因?yàn)閟woole是長駐內(nèi)存
加速的原理:將程序的變量放入到常駐內(nèi)存中,減少每次訪問時(shí)生產(chǎn)變量的時(shí)間
webSocket客戶端向服務(wù)器端發(fā)送信息時(shí),服務(wù)器端觸發(fā)?onMessage?事件回調(diào),服務(wù)器端可以調(diào)用?$server->push()?向某個(gè)客戶端(使用 $fd 標(biāo)識(shí)符)發(fā)送消息
WebSocket 服務(wù)器除了提供 WebSocket 功能之外,實(shí)際上也可以處理 HTTP 長連接。只需要增加?onRequest?事件監(jiān)聽即可實(shí)現(xiàn) Comet 方案 HTTP 長輪詢。
消息事例:
服務(wù)器端代碼:
$ws = new Swoole\WebSocket\Server('0.0.0.0', 9502);
$ws->on('open', function ($ws, $request) {
? ? var_dump($request->fd, $request->server);
? ? $ws->push($request->fd, "hello, welcome\n");
});
$ws->on('message', function ($ws, $frame) {
? ? echo "Message: {$frame->data}\n";
? ? $ws->push($frame->fd, "server: {$frame->data}");
});
$ws->on('close', function ($ws, $fd) {
? ? echo "client-{$fd} is closed\n";
});
$ws->start();
? ? 客戶端代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script ></script>
<script type="text/javascript" charset="utf-8" src="/swoole-study/jquery.min.js"></script>
</head>
<body>
<input type="text" style="" id="button">
<input type="submit" value="測試內(nèi)容" onclick="sub_websocket()">
<div id="content"></div>
<script type="text/javascript" >
var wsServer ='ws://192.168.138.128:9502';
var websocket =new WebSocket(wsServer);
websocket.onopen =function (evt) {
console.log("Connected to WebSocket server.");
};
websocket.onmessage =function (evt) {
console.log('Retrieved data from server: ' + evt.data);
$('#content').append(evt.data)
};
function sub_websocket(){
cont =$('#button').val()
console.log(cont);
websocket.send(cont)
}
</script>
</body>
</html>
前端效果顯示:

服務(wù)器效果顯示

網(wǎng)絡(luò)協(xié)議
分層結(jié)構(gòu):?應(yīng)用層,傳輸層,網(wǎng)絡(luò)層,鏈路層,物理層
物理層:把比特位轉(zhuǎn)換為電信號(hào),為鏈路層提供數(shù)據(jù)傳輸功能
鏈路層:請求頭中添加mac地址和數(shù)據(jù)包
網(wǎng)絡(luò)層:請求層中補(bǔ)充mac地址?IP地址?和數(shù)據(jù)包
傳輸層:使用端口號(hào)將網(wǎng)絡(luò)層主機(jī)對(duì)主機(jī)的通信轉(zhuǎn)換成進(jìn)程對(duì)進(jìn)程的通信,在header中補(bǔ)充端口號(hào)和協(xié)議標(biāo)示?例如?tcp/ip?協(xié)議 80端口
應(yīng)用層:封裝或者解析具體的應(yīng)用數(shù)據(jù),
swoole結(jié)構(gòu)

master:主進(jìn)程;處理swoole的核心事件驅(qū)動(dòng)
manager:管理進(jìn)程?管理worker?task進(jìn)程的創(chuàng)建回收操作、
worker :工作進(jìn)程?用戶處理客戶端的請求
task: 異步任務(wù)工作進(jìn)程?swoole提供的異步工作進(jìn)程
? ??????????