為什么說 Swoole 是 PHP 程序員技術(shù)水平的分水嶺?
大家好,我是碼農(nóng)先森。
談到這個話題有些朋友心中不免會有疑惑,為什么是 Swoole 而不是其他呢?因為 Swoole 是基于 C/C++ 語言開發(fā)的高性能異步通信擴展,覆蓋的特性足夠的多,有利于 PHP 程序員接觸更全面的技術(shù)知識點。
大多數(shù)的朋友踏入到 PHP 的大門都是因其簡單的語法及其弱類型的特性,還有各種集成環(huán)境安裝包、簡單易用的框架,隨隨便便就可以快速的搞出一個系統(tǒng),這就讓 PHP 在我們心中落下的「簡單易用」的印象。
這種印象就注定了 PHP 程序員在編寫代碼的過程中,怎么簡單怎么來,隨便的很,不瞞你說我還見過用中文來命名變量的,這簡直顛覆了我的編程認知,好歹你用拼音也比中文強吧。
不過為了良好的編程習慣,最好還是用英文單詞,畢竟我們也要與國際接觸嘛,自己的代碼放到 GitHub 上也要讓國際友人看的懂吧。話又說回來,很多時候 PHP 靚仔們寫的代碼,過一段時間后自己都看不懂了,更別提其他人了。
我經(jīng)常聽到有人到處吐槽,前人的代碼寫的和屎一樣有又長又臭慘不忍睹,然后你還要憋著內(nèi)傷在這坨屎上繡上一朵花,這場景不堪回首哈哈。
差點寫跑偏了,還是揪回我們這次的主題吧。分水嶺這個詞大家都挺熟悉的,但是在這里就是把 PHP 程序員分成了兩撥人了,一撥是一直在以 PHP-FPM 同步編程模式下編程的人,另一撥是以 Swoole 異步編程模式為代表的編程人。
我們在 PHP-FPM 模式下編程時,集成環(huán)境一啟動,就把 PHP-FPM 進程管理器、Nginx 服務、MySQL 服務全部都給搞起來了,不需要關(guān)心其中的細節(jié),如果想要增加新項目就在 Nginx 的 vhost 目錄,配置一個本地域名重啟一下 Nginx 就完事了。
要是遇到項目總是報錯遲遲無法訪問,就反復重啟集成環(huán)境,運氣好點的重啟一兩次就莫名的好了,倒霉的就涼涼了,又要操蛋的重裝集成環(huán)境了,更有甚者直接重裝操作系統(tǒng),一頓操作猛如虎。
還有在這種模式下,我們也不需要關(guān)心內(nèi)存的使用情況,變量想定義多少搞多少,外部資源隨意加載,從數(shù)據(jù)庫查詢數(shù)據(jù)全部都是 select * 的騷操作,管它用不用的上全部都搞出來再說,如果造成接口訪問時間過長,就全部懟到 Redis 緩存中去,美其名曰這是高級的性能優(yōu)化方案。
要是懂得點異步技術(shù)的靚仔,還會在比如發(fā)送短信等的場景下,使用一下 Redis 消息隊列,異步給用戶發(fā)送消息而不阻塞同步接口,從而使系統(tǒng)的并發(fā)性能得到提高。
長期在 PHP-FPM 模式下編程的人,幾乎不用懂操作系統(tǒng)、網(wǎng)絡協(xié)議等基礎(chǔ)知識,協(xié)議上不管怎么用都只有 HTTP 協(xié)議。
然而在 Swoole 異步編程模式下,不懂這些基礎(chǔ)知識那可就行不通了,除了 HTTP 協(xié)議還有 WebSocket 協(xié)議、MQTT 協(xié)議、TCP 協(xié)議、UDP 協(xié)議,甚至還可以自定義網(wǎng)絡協(xié)議,如果你對基礎(chǔ)協(xié)議知識不了解,那剛開始學習 Swoole 估計就要夭折。
其次 Swoole 中的協(xié)程、通道、多進程編程,就涉及到了操作系統(tǒng)的多路復用、IO調(diào)度策略、進程間通信、進程管理等知識,這些統(tǒng)統(tǒng)都是計算機的底層知識,是在 PHP-FPM 編程模式下接觸不到的。
還有在 Swoole 中可以針對數(shù)據(jù)庫連接打造數(shù)據(jù)庫連接池,高效的復用數(shù)據(jù)庫連接資源,不用每次都重新連接數(shù)據(jù)庫,避免資源的浪費。正是這些基礎(chǔ)知識把大多數(shù) PHP 程序員困在了低水平重復的技術(shù)區(qū)域里,因此要學好 Swoole 需要先學習計算機底層知識,然后再反復的利用 Swoole 進行實踐,兩者相輔相成便可好好打磨自己的技術(shù)。
可以說在 PHP 領(lǐng)域 Swoole 就是這些基礎(chǔ)知識的具體體現(xiàn),深入理解了 Swoole 并且能應用好,就能讓自己的技術(shù)水平上一個新的臺階,超越大多數(shù)的 PHP 程序員。
同時掌握了這些基礎(chǔ)知識橫向?qū)W習其他的語言也會易如反掌,原因是大多數(shù)語言的本質(zhì)都是相通的,了解了其內(nèi)在本質(zhì)基本上就能做到一通百通。在這個持續(xù)內(nèi)卷的時代,是時候讓自己煉就一些不可或缺的內(nèi)功了。
不要讓自己每天都疲于奔命在學習層出不窮新框架的路上,而是要掌握事物的根本規(guī)律以不變應萬變,打造自己的知識壁壘墻,爭取在內(nèi)卷這場風暴中茍活下來。本次分享的內(nèi)容到這里結(jié)束了,希望對大家能有所啟發(fā)。