Swoole 學習指南

Sandy發表於2018-06-08

Swoole到底是個什麼東西?

作者:韓天峰解答(資深PHP程式設計師,Swoole開源專案創始人,PHP官方擴充套件開發組成員。)

一直以來在其他程式語言程式設計師心目中PHP就是個套HTML頁面的。所謂PHP程式設計師就是搞WordPress、discuz二次開發,一個月拿三五千的loser,和我大Java工程師相比簡直low爆了。

但大家黑了PHP半天,才發現PHP最近這幾年反而越來越流行了,PHPer們的工資可一點都不低。就拿我司來說吧,之前面過一個PHP程式設計師工作三年多,水平一般吧,後來公司開價2萬/m收了。

水平好一點的平均都在3-4萬/m。實際上作為一名PHP程式設計師,我很清楚PHP的確有很多侷限性,比如Unix系統程式設計、網路通訊程式設計、非同步io,大部分PHPer不懂。

PHP界也確實沒有這樣的東西。Swoole開源專案就是為了彌補PHP在這些方面的缺陷誕生的。與WordPress這些產品不同,swoole實際上是一個網路通訊和非同步io的引擎,一個基礎庫。PHPer可以基於swoole去實現過去PHP無法實現的功能。swoole為PHPer開啟了通往另一個世界的大門。

用swoole可以做什麼?

使用者開啟了我們的網站。他要做的就是勾選需要發郵件的代理商列表,然後把結算郵件發出去。

假如我們需要發1封郵件,我們寫個函式執行即可。考慮到網路可能會稍微有點延遲,但是是可以接受的,使用者會乖乖等你的網頁發完郵件了再關閉網頁。

假如我們要釋出10封郵件,用一個for迴圈,迴圈10遍執行發郵件操作。這時候,也許10倍的網路延遲會讓使用者稍微有點不耐煩,但勉強可以等吧。

假如要發1000封郵件,for迴圈1000遍,使用者直接揭竿而起,什麼破網站!

但實際上,我們很可能有超過2萬的郵件。怎麼處理這個延遲的問題?

答案就是用非同步。把“發郵件”這個操作封裝,然後後臺非同步地執行1萬遍。這樣的話,使用者提交網頁後,他所等待的時間只是“把發郵件任務請求推送進佇列裡”的時間。而我們的後臺服務將在使用者看不見的地方跑。而swoole就為我們實現了非同步佇列處理及併發等問題。

Swoole需要掌握哪些基礎?

多程式/多執行緒

瞭解Linux作業系統程式和執行緒的概念
瞭解Linux程式/執行緒切換排程的基本知識
瞭解程式間通訊的基本知識,如管道、UnixSocket、訊息佇列、共享記憶體
複製程式碼

SOCKET

瞭解SOCKET的基本操作如accept/connect、send/recv、close、listen、bind
瞭解SOCKET的接收快取區、傳送快取區、阻塞/非阻塞、超時等概念
複製程式碼

IO複用

瞭解select/poll/epoll
瞭解基於select/epoll實現的事件迴圈,Reactor模型
瞭解可讀事件、可寫事件
複製程式碼

TCP/IP網路協議

瞭解TCP/IP協議
瞭解TCP、UDP傳輸協議
複製程式碼

除錯工具

使用 gdb 除錯Linux程式
使用 strace 跟蹤程式的系統呼叫
使用 tcpdump 跟蹤網路通訊過程
其他Linux系統工具,如ps、lsof、top、vmstat、netstat、sar、ss等
複製程式碼

swoole高階講解

安裝篇
原始碼安裝Swoole
原始碼安裝PHP7
讓PHP支援Swoole
基礎篇
網路通訊引擎
Tcp服務/客戶端
websocket伺服器
進階篇
非同步MySQL場景
處理非同步實時日誌
高效能訊息佇列
非同步任務task
程式、記憶體、協程
公眾號:【程式碼技巧】 回覆:swoole 獲取swoole高階詳解教程,多謝支援
複製程式碼

相關文章