Swoole到底是個(gè)什么東西?
作者:韓天峰解答(資深PHP程序員,Swoole開源項(xiàng)目創(chuàng)始人钱磅,PHP官方擴(kuò)展開發(fā)組成員。)
一直以來在其他編程語言程序員心目中PHP就是個(gè)套HTML頁面的童社。所謂PHP程序員就是搞WordPress、discuz二次開發(fā)著隆,一個(gè)月拿三五千的loser扰楼,和我大Java工程師相比簡(jiǎn)直low爆了。
但大家黑了PHP半天美浦,才發(fā)現(xiàn)PHP最近這幾年反而越來越流行了弦赖,PHPer們的工資可一點(diǎn)都不低。就拿我司來說吧抵代,之前面過一個(gè)PHP程序員工作三年多腾节,水平一般吧忘嫉,后來公司開價(jià)2萬/m收了荤牍。
水平好一點(diǎn)的平均都在3-4萬/m案腺。實(shí)際上作為一名PHP程序員,我很清楚PHP的確有很多局限性康吵,比如Unix系統(tǒng)編程劈榨、網(wǎng)絡(luò)通信編程、異步io晦嵌,大部分PHPer不懂同辣。
PHP界也確實(shí)沒有這樣的東西。Swoole開源項(xiàng)目就是為了彌補(bǔ)PHP在這些方面的缺陷誕生的惭载。與WordPress這些產(chǎn)品不同旱函,swoole實(shí)際上是一個(gè)網(wǎng)絡(luò)通信和異步io的引擎,一個(gè)基礎(chǔ)庫描滔。PHPer可以基于swoole去實(shí)現(xiàn)過去PHP無法實(shí)現(xiàn)的功能棒妨。swoole為PHPer打開了通往另一個(gè)世界的大門。
用swoole可以做什么含长?
用戶打開了我們的網(wǎng)站券腔。他要做的就是勾選需要發(fā)郵件的代理商列表,然后把結(jié)算郵件發(fā)出去拘泞。
假如我們需要發(fā)1封郵件纷纫,我們寫個(gè)函數(shù)執(zhí)行即可∨汶纾考慮到網(wǎng)絡(luò)可能會(huì)稍微有點(diǎn)延遲辱魁,但是是可以接受的,用戶會(huì)乖乖等你的網(wǎng)頁發(fā)完郵件了再關(guān)閉網(wǎng)頁偷厦。
假如我們要發(fā)布10封郵件商叹,用一個(gè)for循環(huán),循環(huán)10遍執(zhí)行發(fā)郵件操作只泼。這時(shí)候剖笙,也許10倍的網(wǎng)絡(luò)延遲會(huì)讓用戶稍微有點(diǎn)不耐煩,但勉強(qiáng)可以等吧请唱。
假如要發(fā)1000封郵件弥咪,for循環(huán)1000遍,用戶直接揭竿而起十绑,什么破網(wǎng)站聚至!
但實(shí)際上,我們很可能有超過2萬的郵件本橙。怎么處理這個(gè)延遲的問題扳躬?
答案就是用異步。把“發(fā)郵件”這個(gè)操作封裝,然后后臺(tái)異步地執(zhí)行1萬遍贷币。這樣的話击胜,用戶提交網(wǎng)頁后,他所等待的時(shí)間只是“把發(fā)郵件任務(wù)請(qǐng)求推送進(jìn)隊(duì)列里”的時(shí)間役纹。而我們的后臺(tái)服務(wù)將在用戶看不見的地方跑偶摔。而swoole就為我們實(shí)現(xiàn)了異步隊(duì)列處理及并發(fā)等問題。
Swoole需要掌握哪些基礎(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等
swoole高級(jí)講解
安裝篇
源碼安裝Swoole
源碼安裝PHP7
讓PHP支持Swoole
基礎(chǔ)篇
網(wǎng)絡(luò)通信引擎
Tcp服務(wù)/客戶端
websocket服務(wù)器
進(jìn)階篇
異步MySQL場(chǎng)景
處理異步實(shí)時(shí)日志
高性能消息隊(duì)列
異步任務(wù)task
進(jìn)程驹针、內(nèi)存烘挫、協(xié)程
公眾號(hào):【代碼技巧】 回復(fù):swoole 獲取swoole高級(jí)詳解教程,多謝支持