為什麼說 Swoole 是 PHP 程式設計師技術水平的分水嶺?

Yxh_blogs發表於2024-08-26

大家好,我是碼農先森。

談到這個話題有些朋友心中不免會有疑惑,為什麼是 Swoole 而不是其他呢?因為 Swoole 是基於 C/C++ 語言開發的高效能非同步通訊擴充套件,覆蓋的特性足夠的多,有利於 PHP 程式設計師接觸更全面的技術知識點。大多數的朋友踏入到 PHP 的大門都是因其簡單的語法及其弱型別的特性,還有各種整合環境安裝包、簡單易用的框架,隨隨便便就可以快速的搞出一個系統,這就讓 PHP 在我們心中落下的「簡單易用」的印象。

這種印象就註定了 PHP 程式設計師在編寫程式碼的過程中,怎麼簡單怎麼來,隨便的很,不瞞你說我還見過用中文來命名變數的,這簡直顛覆了我的程式設計認知,好歹你用拼音也比中文強吧。不過為了良好的程式設計習慣,最好還是用英文單詞,畢竟我們也要與國際接觸嘛,自己的程式碼放到 GitHub 上也要讓國際友人看的懂吧。話又說回來,很多時候 PHP 靚仔們寫的程式碼,過一段時間後自己都看不懂了,更別提其他人了。我經常聽到有人到處吐槽,前人的程式碼寫的和屎一樣有又長又臭慘不忍睹,然後你還要憋著內傷在這坨屎上繡上一朵花,這場景不堪回首哈哈。

差點寫跑偏了,還是揪回我們這次的主題吧。分水嶺這個詞大家都挺熟悉的,但是在這裡就是把 PHP 程式設計師分成了兩撥人了,一撥是一直在以 PHP-FPM 同步程式設計模式下程式設計的人,另一撥是以 Swoole 非同步程式設計模式為代表的程式設計人。我們在 PHP-FPM 模式下程式設計時,整合環境一啟動,就把 PHP-FPM 程序管理器、Nginx 服務、MySQL 服務全部都給搞起來了,不需要關心其中的細節,如果想要增加新專案就在 Nginx 的 vhost 目錄,配置一個本地域名重啟一下 Nginx 就完事了,要是遇到專案總是報錯遲遲無法訪問,就反覆重啟整合環境,運氣好點的重啟一兩次就莫名的好了,倒黴的就涼涼了,又要操蛋的重灌整合環境了,更有甚者直接重灌作業系統,一頓操作猛如虎。還有在這種模式下,我們也不需要關心記憶體的使用情況,變數想定義多少搞多少,外部資源隨意載入,從資料庫查詢資料全部都是 select * 的騷操作,管它用不用的上全部都搞出來再說,如果造成介面訪問時間過長,就全部懟到 Redis 快取中去,美其名曰這是高階的效能最佳化方案。要是懂得點非同步技術的靚仔,還會在比如傳送簡訊等的場景下,使用一下 Redis 訊息佇列,非同步給使用者傳送訊息而不阻塞同步介面,從而使系統的併發效能得到提高。

長期在 PHP-FPM 模式下程式設計的人,幾乎不用懂作業系統、網路協議等基礎知識,協議上不管怎麼用都只有 HTTP 協議。然而在 Swoole 非同步程式設計模式下,不懂這些基礎知識那可就行不通了,除了 HTTP 協議還有 WebSocket 協議、MQTT 協議、TCP 協議、UDP 協議,甚至還可以自定義網路協議,如果你對基礎協議知識不瞭解,那剛開始學習 Swoole 估計就要夭折。其次 Swoole 中的協程、通道、多程序程式設計,就涉及到了作業系統的多路複用、IO排程策略、程序間通訊、程序管理等知識,這些統統都是計算機的底層知識,是在 PHP-FPM 程式設計模式下接觸不到的。還有在 Swoole 中可以針對資料庫連線打造資料庫連線池,高效的複用資料庫連線資源,不用每次都重新連線資料庫,避免資源的浪費。正是這些基礎知識把大多數 PHP 程式設計師困在了低水平重複的技術區域裡,因此要學好 Swoole 需要先學習計算機底層知識,然後再反覆的利用 Swoole 進行實踐,兩者相輔相成便可好好打磨自己的技術。

可以說在 PHP 領域 Swoole 就是這些基礎知識的具體體現,深入理解了 Swoole 並且能應用好,就能讓自己的技術水平上一個新的臺階,超越大多數的 PHP 程式設計師。同時掌握了這些基礎知識橫向學習其他的語言也會易如反掌,原因是大多數語言的本質都是相通的,瞭解了其內在本質基本上就能做到一通百通。在這個持續內卷的時代,是時候讓自己煉就一些不可或缺的內功了,不要讓自己每天都疲於奔命在學習層出不窮新框架的路上,而是要掌握事物的根本規律以不變應萬變,打造自己的知識壁壘牆,爭取在內卷這場風暴中苟活下來。本次分享的內容到這裡結束了,希望對大家能有所啟發。

感謝閱讀,個人觀點僅供參考,歡迎在評論區發表不同觀點。


歡迎關注、分享、點贊、收藏、在看,我是微信公眾號「碼農先森」作者。

相關文章