PHP高性能應用服務器roadrunner
對于php很多人對它又愛又恨,喜歡它的簡潔,入門上手快,討厭它的性能不夠高。雖然php一直在努力提升自己的性能,并且php7在性能上得到了大幅的提升,但是因為是腳本語言,因為每次執行都需要進行解釋,所以php在性能上和編譯語言還是有很大的差距的。
如果php可以每次執行不需要重新進行解釋,如果php可以讓進程常駐內存,那么是不是php的性能會得到大幅提升呢,答案是肯定的,而且現實中已經有解決方案出現,它就是現在很多追求性能的php公司都在使用的swoole擴展,有了swoole,php可以常駐內存,可以直接處理web響應請求,php的性能得到巨大提升。
傳統運行方式
我們知道傳統的php運行方式是通過php-fpm進行管理,然后和nginx進行通訊,nginx負責處理靜態資源,而php動態內容的處理由nginx分配給php-fpm進行處理,而php-fpm選擇相應的php進程進行處理,返回結果。
roadrunnner運行模式
不同于傳統的運行模式,roadrunner運行模式相當于把nginx和php-fpm進行了整合,所有的請求直接交給roadrunner進行處理,而php進程負責和roadrunner進行通訊。
roadrunner是由golang開發的,我們都知道golang提供了gorutine,它只需要很小的內存就可以啟動非常多的協程,這對于并發非常有幫助,而使用了roadrunner作為php的服務器,php又在性能上得到了大幅提升。
roadrunner的優點
- 支持擴展
- 支持http2
- 跨平臺
- 高性能
- 安裝簡單
- 支持隊列
- 支持grpc
性能對比
雖然roadrunner一定程度上提升了php的并發性,但是和golang以及swoole相比還是有很大的差距的,下面的圖表我們可以看出來,swoole在性能上對php的提升是非常巨大的。
總結
既然單純的roadunner還是無法滿足我們對性能的要求,那么我們就可以使用swoole+roadrunner的組合來提升我們應用程序的性能。
很多時候總有人在說php是不是過時了,php是不是要消亡了,php是不是沒有學習的必要了,我想說的是,從目前來看,php的社區依然在發展,php的技術大會依然每年都會召開,php的版本依然每年都有新的迭代。
一門語言停止前行的唯一原因就是它自己放棄了自己,而php它沒有放棄自己,它一直在努力改變著自己。有人會說php一直在抄襲模仿,沒有自己的創新,我們說的是,一個肯不斷接受新知識的語言永遠不會過時。