摘要:眾所周知,框架越重,性能相對就越低,因為重型框架會在解析時調(diào)用非常多的類方法和自定義函數(shù),導(dǎo)致性能嚴(yán)重下降。好在相對于而言,性能提升了將近一倍,而的也是個不錯的替代方案。首先安裝和擴(kuò)展。我已向作者反饋,他修正了這個問題。
眾所周知,PHP框架越重,性能相對就越低,因為重型框架會在解析時調(diào)用非常多的類、方法和自定義函數(shù),導(dǎo)致性能嚴(yán)重下降。
Laravel是一個非常受歡迎的PHP框架,但它也是一個重型的全棧框架,你可以使用這個方法測試你的Laravel應(yīng)用的性能,效果都很不理想。
當(dāng)然Laravel還有個姊妹版:Lumen,這個是類似于Slim的微框架,如果你覺得這個微框架足夠使用,可以用來替代Laravel。
好在PHP7相對于PHP5.6而言,性能提升了將近一倍,而Facebook的HHVM也是個不錯的替代方案。所以如果可能的話,盡可能用最新版PHP,好處不是一星半點兒。
但對于Laravel這些重型框架來說,即使用了PHP7/HHVM,性能還是很低,雖然用緩存(比如memcached/redis等)可以緩解服務(wù)器壓力,但只是提升了靜態(tài)頁面速度,對于Eloquent ORM這種很耗性能的地方,還是治標(biāo)不治本(當(dāng)然你可以用DB門面代替,參考我的這個提問),難道就沒有辦法了嗎?(有人說opcache,但是它對于Laravel框架來說效果不是非常好)
不!你需要Stone!
Stone是什么?這是作者在PHPHub上面的帖子,查看Stone項目地址和文檔。
下面是在PHP7的安裝方法:
我的測試環(huán)境是Debian Linux 8 64位,OSX也可以(用homebrew安裝Nginx和PHP7,其他操作見下面),不推薦用Windows,因為編譯擴(kuò)展相對麻煩些。
用Debian/Ubuntu/Linux mint可以使用dotdeb源,有最新版的Nginx,PHP7,MySQL/MariaDB。當(dāng)然我不會告訴你,我用的是OpenResty,安裝過程不贅述,不會的請Google。
首先安裝swoole和runkit擴(kuò)展。
pecl install swoole
PHP7在這里的坑是,如果用這個源安裝了PHP7,由于PEAR不是最新版,可能會遇到這個issues描述的問題,解決方法:
wget http://pear.php.net/go-pear.phar php go-pear.phar
在撰寫本文時,runkit擴(kuò)展暫時不支持PHP7,所以不要用pecl安裝,編譯會出錯的。但是有人做了修改版可以用,見這個issues。
安裝方法:
git clone https://github.com/runkit7/runkit7.git cd runkit7 phpize ./configure make sudo make install
到此這兩個擴(kuò)展都安裝成功。
然后根據(jù)你的PHP7實際路徑來寫ini文件,加載swoole和runkit。至于Windows或者OSX用homebrew安裝的話,直接改php.ini就行了。
使用Dotdeb源安裝的PHP7路徑是/etc/php/7.0/,所以我的相關(guān)命令是:
sudo echo extension=swoole.so >> /etc/php/7.0/cli/conf.d/20-swoole.ini sudo echo extension=swoole.so >> /etc/php/7.0/fpm/conf.d/20-swoole.ini sudo echo extension=runkit.so >> /etc/php/7.0/cli/conf.d/20-runkit.ini sudo echo extension=runkit.so >> /etc/php/7.0/fpm/conf.d/20-runkit.ini
然后安裝Stone:composer require stone/kernel:dev-master,不得不說的是,在撰寫本文時作者的gitbook上面有兩個錯誤:
1.把pecl寫成了pcel;
2.composer安裝的地址。仍然是他之前的項目地址,而他在帖子里面說了,由于之前的項目包含了他的公司的某些信息,所以他換了個地址,就是StoneGroup/stone。
大家在參考Stone文檔時務(wù)必按本文操作,少走彎路。我已向作者反饋,他修正了這個問題。
最后重啟php-fpm,再用php -m看看,這兩個擴(kuò)展加載成功。
接下來的步驟,你按照文檔來操作就行了,到此Stone在PHP7上面安裝成功!啟動Stone,好好享受性能的飛躍吧!
PS:找到另一個類似項目,但是在細(xì)節(jié)上面的實現(xiàn)方式不同,感興趣的可以看看:LaravelFly
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/21735.html
摘要:目前來看等語言還難以企及和。作為一個資深的開發(fā)者,在技術(shù)上給各位程序十點未來的建議,希望對大家有所幫助。開發(fā)者應(yīng)當(dāng)學(xué)習(xí)掌握規(guī)范,在開發(fā)程序時應(yīng)當(dāng)盡量遵循規(guī)范。程序員除了寫后臺程序之外,還有很大一部分工作在展現(xiàn)層,和瀏覽器前端打交道。 PHP 從誕生到現(xiàn)在已經(jīng)有20多年歷史,從Web時代興起到移動互聯(lián)網(wǎng)退潮,互聯(lián)網(wǎng)領(lǐng)域各種編程語言和技術(shù)層出不窮, Node.js 、 GO 、 Pytho...
摘要:但在密集計算方面比等靜態(tài)編譯語言差幾十倍甚至上百倍。一使用棧內(nèi)存在引擎和擴(kuò)展中,經(jīng)常要創(chuàng)建一個的變量,底層就是一個指針。代碼中創(chuàng)建的變量也進(jìn)行了優(yōu)化,直接在棧內(nèi)存上預(yù)分配。應(yīng)用層與底層在錯誤拋出的方式全部統(tǒng)一為異常。 原文:http://rango.swoole.com/archives/440最近PHP官方終于發(fā)布了傳說中的PHP7,雖然只是alpha版。PHP7號稱是新一代的PHP...
摘要:什么是當(dāng)解釋器完成對腳本代碼的分析后,便將它們生成可以直接運行的中間代碼,也稱為操作碼,。的目地是避免重復(fù)編譯,減少和內(nèi)存開銷。這將帶來顯著的性能加速,通常特別是高流量和高并發(fā)量時降低了整體服務(wù)器的內(nèi)存消耗,而且很少有缺點。 一、個人實踐發(fā)現(xiàn)opcache 最近為了應(yīng)對雙十一期間高流量的沖擊,小編通過壓力測試去查找服務(wù)器性能瓶頸,發(fā)現(xiàn)100并發(fā)時,QPS并不是很高,但CPU和內(nèi)存消耗特...
摘要:如何實現(xiàn)持久化持久化,將在內(nèi)存中的的狀態(tài)保存到硬盤中,相當(dāng)于備份數(shù)據(jù)庫狀態(tài)。相當(dāng)于備份數(shù)據(jù)庫接收到的命令,所有被寫入的命令都是以的協(xié)議格式來保存的。 最近社區(qū)里面有一篇文章引起了最多程序猿的關(guān)注,Laravel、PHPer 面試可能會遇到的問題,看評論區(qū)不少小伙伴們被難倒,對于一些問題同樣難倒了我(其實有很多啦),趁著周末有空,又總結(jié)梳理了一遍,順便來答一波題。由于個人技術(shù)水平有限,答...
閱讀 923·2023-04-25 19:28
閱讀 1607·2021-09-10 10:51
閱讀 2547·2019-08-30 15:55
閱讀 3544·2019-08-26 13:55
閱讀 3150·2019-08-26 13:24
閱讀 3462·2019-08-26 11:46
閱讀 2886·2019-08-23 17:10
閱讀 1565·2019-08-23 16:57