Node.js的顛覆者:PHP的Swoole擴充_PHP教程

來源:互聯網
上載者:User
最近2年Node.js很火,非同步與協程是網路開發方面熱門的話題。在追求新技術的同時,也應該反思下這裡面存在的陷阱。Node.js確實是一門有趣好玩有個性的語言和技術,動態性,全非同步回調的方式,閉包等等特性。值得所有程式員嘗試一下。 但本文將介紹的是一門另外的容易被大家輕視的程式設計語言:PHP。長期以來PHP都是作為一門為Web開發而生的前端指令碼語言。PHP極其的簡單,你可以在一周只能掌握它,一月內開發出一個功能豐富的網站。發展至今PHP其實已經完全不再是一門簡單的語言了,PHP的功能保羅永珍,常用的作業系統功能,如進程管理,訊號,網路通訊,多線程,ptrace、inotify、加密解密、壓縮都有相應的擴充實現,而且PHP可以很好的與C/C++互相調用。PHP提供了ZendAPI,可以很方便地使用C來擴充PHP的功能。語言特性方面PHP5.4提供的namespace,phar打包,composer依賴管理,Trait,完整的物件導向編程文法,強大的魔術方法和常量,字串與函數類對象直接轉換,閉包和匿名函數等豐富的語言特性。在後端開發方面強大到堪比Java,C#,但開發效率更高。


PHP對比Node.js的優勢:

1、PHP開發效率更高

PHP比Node.js更簡單直接,這一點有點像C了。使用PHP開發一個功能,幾乎是所有語言中效率最高的,沒有之一。

2、PHP程式員更多

PHP因為比較容易入門的原因,程式員數量遠超其他語言。其他語言程式員也有很大一部分會PHP。

3、PHP開源項目多

PHP有大量開源的項目,有各種第三方庫 Node.js最大的特色之一是內建了非同步高效能的Socket Server/Client實現,在此基礎上提供了內建的Web伺服器。PHP裡也有類似的神器,那就是Swoole擴充。使用Swoole擴充完全可以開發出一個高效能安全穩定的伺服器程式來。絲毫不遜於Node.js,而且在某些方面比Node.js更強大。 Swoole使用C語言編寫,以PHP擴充的方式來運行。Swoole的網路IO部分基於epoll/kqueue事件迴圈,是全非同步非阻塞的。商務邏輯部分使用多進程同步阻塞方式來運行。這樣既保證了Server能夠應對高並發和大量TCP串連。又保證業務代碼仍然可以簡單的編寫。

Swoole對比Node.js的優勢:

1、swoole是原生支援多進程/多線程的

開發人員只需要修改一個參數,配置下要啟動多少個進程即可。而Node.js的網路程式庫本身並沒有提供多進程/多線程的實現。開發人員需要自行建立進程。或者乾脆使用單線程。這樣無法充分利用多核。


2、swoole使用訊息傳遞+多Worker進程,而不是多線程+共用記憶體+加鎖

,共用記憶體的效能雖然很好,但存在安全問題,需要讀寫時加鎖。鎖的粒度過大會導致只有一個線程在運行。鎖太複雜又會有死結問題。所以開發人員需要非常謹慎小心。


3、swoole的代碼編寫是同步,而不是嵌套非同步回調

Node.js的代碼如果太複雜,會嵌套多層回調,使代碼喪失可讀性,程式流程變得很亂。Swoole使用了傳統Linux下半同步半非同步多Worker的實現方式。業務代碼按照同步方式編寫,更簡單。Swoole也內建了Socket用戶端的實現,但採用的是同步+並行方式來執行。PHP本身也提供了socket的功能,但某幾個函數存在一些bug,而且比較複雜。Swoole內建的用戶端類更加安全和簡化。


4、swoole內建了Node.js所沒有的額外特性

如CPU Affinity設定,守護進程化,混合UDP/TCP多連接埠監聽,多定時器等。

Swoole項目地址:

https://github.com/matyhtf/swoole

http://www.bkjia.com/PHPjc/440159.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/440159.htmlTechArticle最近2年Node.js很火,非同步與協程是網路開發方面熱門的話題。在追求新技術的同時,也應該反思下這裡面存在的陷阱。Node.js確實是一門有趣...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.