Swoole 概述
Swoole是面向生產(chǎn)環(huán)境的PHP異步網(wǎng)絡(luò)通信引擎。使用純C語言編寫(Swoole 4開始逐漸改為通過C++編寫),提供了PHP語言的異步多線程服務(wù)器、異步TCP/UDP網(wǎng)絡(luò)客戶端、異步MySQL、異步Redis、數(shù)據(jù)庫(kù)連接池、AsyncTask、消息隊(duì)列、毫秒定時(shí)器、異步文件讀寫、異步DNS查詢。
除了異步IO的支持之外,Swoole為PHP多進(jìn)程的模式設(shè)計(jì)了多個(gè)并發(fā)數(shù)據(jù)結(jié)構(gòu)和 IPC 通信機(jī)制,可以大大簡(jiǎn)化多進(jìn)程并發(fā)編程的工作。其中包括了并發(fā)原子計(jì)數(shù)器,并發(fā) HashTable、Channel、Lock、進(jìn)程間通信 IPC 等豐富的功能特性。
之前的PHP一直被詬病的一個(gè)原因就是它是同步阻塞式語言,這在Web應(yīng)用這種 IO密集型的領(lǐng)域?qū)τ诰帉懜卟l(fā)高性能的應(yīng)用而言,是一個(gè)重大阻礙。有了Swoole之后,PHP開發(fā)人員可以輕松編寫高性能的異步并發(fā)TCP、UDP、Unix Socket、HTTP以及WebSocket服務(wù),從而使得PHP語言在異步IO和網(wǎng)絡(luò)通信領(lǐng)域開疆拓土,Swoole讓PHP插上了異步的翅膀,讓它飛得更高。
關(guān)于 Swoole 的官方中文文檔可以看這里:https://wiki.swoole.com。
如果想要更好的掌握Swoole的底層原理,需要具備以下知識(shí)儲(chǔ)備:
多進(jìn)程/多線程
了解 Linux 操作系統(tǒng)進(jìn)程和線程的概念
了解 Linux 進(jìn)程/線程切換調(diào)度的基本知識(shí)
了解進(jìn)程間通信的基本知識(shí),如管道、UnixSocket、消息隊(duì)列、共享內(nèi)存
SOCKET
了解 SOCKET 的基本操作如 accept/connect、send/recv、close、listen、bind
了解 SOCKET 的接收緩存區(qū)、發(fā)送緩存區(qū)、阻塞/非阻塞、超時(shí)等概念
IO復(fù)用
了解 select/poll/epoll
了解基于 select/epoll 實(shí)現(xiàn)的事件循環(huán),Reactor 模型
了解可讀事件、可寫事件
TCP/IP網(wǎng)絡(luò)協(xié)議
了解 TCP/IP 協(xié)議
了解 TCP、UDP 傳輸協(xié)議
調(diào)試工具
使用 gdb 調(diào)試 Linux 程序
使用 strace 跟蹤進(jìn)程的系統(tǒng)調(diào)用
使用 tcpdump 跟蹤網(wǎng)絡(luò)通信過程
其他 Linux 系統(tǒng)工具,如 ps、lsof、top、vmstat、netstat、sar、ss 等

一、安裝準(zhǔn)備
安裝前必須保證系統(tǒng)已經(jīng)安裝了下列軟件:
php-7.1 或更高版本
gcc-4.8 或更高版本
make
autoconf
二、快速安裝
Swoole項(xiàng)目已收錄到PHP官方擴(kuò)展庫(kù),除了手工下載編譯外,還可以通過PHP官方提供的pecl命令,一鍵下載安裝:
pecl install swoole
最后,編譯安裝成功后,修改php.ini加入(找到php.ini的路徑輸入php -i | grep php.ini)
php-i|grep php.ini
加入以下內(nèi)容:
extension=swoole.so
通過php -m來查看是否成功加載了swoole.so

三、測(cè)試
1、編寫swoole_http.php文件
// 監(jiān)聽本地9505端口
$server=newswoole_http_server('0.0.0.0',9505);
// 服務(wù)器啟動(dòng)時(shí)返回響應(yīng)
$server->on("start",function($server){
echo"Swoole http server is started at http://127.0.0.1:9505\n";
});
// 向服務(wù)器發(fā)送請(qǐng)求時(shí)返回響應(yīng)
// 可以獲取請(qǐng)求參數(shù),也可以設(shè)置響應(yīng)頭和響應(yīng)內(nèi)容
$server->on("request",function($request,$response){
$response->header("Content-Type","text/plain");
$response->end("Hello World\n");
});
// 啟動(dòng) HTTP 服務(wù)器
$server->start();
2、啟動(dòng)服務(wù)
php swoole_http.php
運(yùn)行結(jié)果:
測(cè)試結(jié)果:
好了,以上就是Swoole安裝及入門方法,想要了解更多關(guān)于swoole教程和資訊歡迎關(guān)注編程學(xué)習(xí)網(wǎng)
掃碼二維碼 獲取免費(fèi)視頻學(xué)習(xí)資料
- 本文固定鏈接: http://www.wangchenghua.com/post/7958/
- 轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載必須在正文中標(biāo)注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費(fèi)視頻資料