在PHP7下安裝Stone大幅度提高Laravel框架性能

衆所周知,PHP框架越重,性能相對就越低,由於重型框架會在解析時調用很是多的類、方法和自定義函數,致使性能嚴重降低。
Laravel是一個很是受歡迎的PHP框架,但它也是一個重型的全棧框架,你能夠使用這個方法測試你的Laravel應用的性能,效果都很不理想。
固然Laravel還有個姊妹版:Lumen,這個是相似於Slim的微框架,若是你以爲這個微框架足夠使用,能夠用來替代Laravel。
好在PHP7相對於PHP5.6而言,性能提高了將近一倍,而Facebook的HHVM也是個不錯的替代方案。因此若是可能的話,儘量用最新版PHP,好處不是一星半點兒
但對於Laravel這些重型框架來講,即便用了PHP7/HHVM,性能仍是很低,雖然用緩存(好比memcached/redis等)能夠緩解服務器壓力,但只是提高了靜態頁面速度,對於Eloquent ORM這種很耗性能的地方,仍是治標不治本(固然你能夠用DB門面代替,參考個人這個提問),難道就沒有辦法了嗎?(有人說opcache,可是它對於Laravel框架來講效果不是很是好)
不!你須要Stone!
Stone是什麼?這是做者在PHPHub上面的帖子,查看Stone項目地址文檔
下面是在PHP7的安裝方法:
個人測試環境是Debian Linux 8 64位,OSX也能夠(用homebrew安裝Nginx和PHP7,其餘操做見下面),不推薦用Windows,由於編譯擴展相對麻煩些
用Debian/Ubuntu/Linux mint能夠使用dotdeb源,有最新版的Nginx,PHP7,MySQL/MariaDB。固然我不會告訴你,我用的是OpenResty,安裝過程不贅述,不會的請Google。
首先安裝swoolerunkit擴展。
pecl install swoole
PHP7在這裏的坑是,若是用這個源安裝了PHP7,因爲PEAR不是最新版,可能會遇到這個issues描述的問題,解決方法:php

wget http://pear.php.net/go-pear.phar
php go-pear.phar

在撰寫本文時,runkit擴展暫時不支持PHP7,因此不要用pecl安裝,編譯會出錯的。可是有人作了修改版能夠用,見這個issues
安裝方法:html

git clone https://github.com/runkit7/runkit7.git
cd runkit7
phpize
./configure
make
sudo make install

到此這兩個擴展都安裝成功。
而後根據你的PHP7實際路徑來寫ini文件,加載swoole和runkit。至於Windows或者OSX用homebrew安裝的話,直接改php.ini就好了。
使用Dotdeb源安裝的PHP7路徑是/etc/php/7.0/,因此個人相關命令是:laravel

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上面有兩個錯誤git

1.把pecl寫成了pcel
2.composer安裝的地址。仍然是他以前的項目地址,而他在帖子裏面說了,因爲以前的項目包含了他的公司的某些信息,因此他換了個地址,就是StoneGroup/stonegithub

你們在參考Stone文檔時務必按本文操做,少走彎路。我已向做者反饋,他修正了這個問題。
最後重啓php-fpm,再用php -m看看,這兩個擴展加載成功。
接下來的步驟,你按照文檔來操做就好了,到此Stone在PHP7上面安裝成功!啓動Stone,好好享受性能的飛躍吧!
PS:找到另外一個相似項目,可是在細節上面的實現方式不一樣,感興趣的能夠看看:LaravelFlyredis

相關文章
相關標籤/搜索