編程學(xué)習(xí)網(wǎng) > 數(shù)據(jù)庫(kù) > 高性能Swoole擴(kuò)展的安裝與使用文檔入門
2021
06-05

高性能Swoole擴(kuò)展的安裝與使用文檔入門


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í)資料

Python編程學(xué)習(xí)

查 看2022高級(jí)編程視頻教程免費(fèi)獲取