摘要:如需要支持熱啟動,請自行谷歌,大概原理就是用監(jiān)控文件變更,如果更新了重啟如果正式環(huán)境中還可以自己寫個部署腳本,后重啟服務(wù)等,方法很多不一一列舉。
1 Laravel的速度瓶頸在哪? 1.1 已有的一些優(yōu)化方法
1.1.1 laravel官方提供了一些優(yōu)化laravel的優(yōu)化方法
php artisan optimize php artisan config:cache php artisan route:cache
1.1.2 使用opcache加速,PHP是個解釋型語言執(zhí)行的時候先得把程序讀進來,由Zend引擎編譯成opcode。最后Zend虛擬機順次執(zhí)行這些opcode完成操作。opcache起到的作用就是緩存opcode,從而減少編譯的時間,減少CPU密集。
1.1.3 使用PHP7.1,不要問我為什么
1.2 磁盤IO上的瓶頸Laravel本身啟動需要的文件就很多,外加其出了名的生態(tài)環(huán)境好,開發(fā)中我們會很多很多現(xiàn)有的輪子,使得一次啟動的磁盤IO特別高(就是要加載很多文件嘛),雖然官方的php artisan optimize方法優(yōu)化了文件的加載,但并沒有實際解決IO上的問題。
知道了問題那就很容易解決了,只要不要每次啟動都重新加載就好了,下面輪到Swoole上場啦。
Swoole是一個PHP擴展,使得PHP使用異步的方式執(zhí)行,就像node一樣,而且還能使用socket,為PHP提供了一系列異步IO、事件驅(qū)動、并行數(shù)據(jù)結(jié)構(gòu)功能。具體的安裝方法這就不說了,自己谷歌吧。
搜搜github上已有的swoole啟動laravel的輪子,找了三個輪子
scil/LaravelFly
chongyi/swoole-laravel-framework
garveen/laravoole
用了LaravelFly,聽名字感覺感覺挺酷,結(jié)果不如人意,實在不喜歡它那種強硬的啟動方式。跟Laravel的風格-"優(yōu)雅" 很不搭。于是又想自己寫,結(jié)果寫到一半發(fā)現(xiàn)laravoole這個項目有更新,然后啟動方式(使用artisan命令,沒更新前是用的bash腳本啟動),代碼風格都很酷,這不就是我想做的東西嘛!
chongyi/swoole-laravel-framework這個輪子是我在寫輪子的時候,作者在微信群里分享的,有興趣的朋友可以試試,我還沒試過。
可以看看作者的文檔,我就只總結(jié)下我在用的過程中遇到的幾個點
1 你應(yīng)該不再使用以下的超全局變量,因為它們是WEB服務(wù)器創(chuàng)建的,而一個非熱啟動的項目使用他們可能會造成變量污染,你可以從Laravel的Request類中拿到你要的數(shù)據(jù)。
$GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSION
2 因為我要開發(fā)微信相關(guān)的,所以使用了EASYWECHAT這個包,但是這個包的oauth方法使用的是原生的SESSION,所以這邊也要改成redis等其它方式去存儲session。具體代碼如下。
//在你的控制器或者中間件中 public function handle(Request $request, Closure $next) //省略代碼 $redirect = config("app.url") . $request->getRequestUri();//這個地址要求帶著token $options = [ "app_id" => config("app.appid"), "secret" => config("app.secret"), "oauth" => [ "scopes" => ["snsapi_userinfo"], "callback" => $redirect, ], ]; $app = new Application($options); //使用laravel session替代原生session $app->oauth->setRequest($request); //省略下面代碼 }
3 不支持熱啟動了,所以每次更新代碼后都需要重新啟動Laravoole進程。
$ php artisan laravoole restart
如需要支持熱啟動,請自行谷歌 swoole + inotify,大概原理就是用inotify監(jiān)控文件變更,如果更新了重啟swoole,如果正式環(huán)境中還可以自己寫個部署腳本,git pull后重啟服務(wù)等,方法很多不一一列舉。
5 愉快的準備測試啦測試機子:
阿里云
centos6.5
雙核
4G
無視帶寬影響,向本機請求,測試結(jié)果如下,測了幾次,平均在700RPS左右。原先的只有20多RPS。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22222.html
摘要:負責解釋執(zhí)行文件生成響應(yīng),最終返回給,展現(xiàn)至前端。相比于傳統(tǒng)架構(gòu),進程模型最大的特點在于其多線程模式處理網(wǎng)絡(luò)請求,使得其能輕松應(yīng)對大量連接。這要求開發(fā)人員對于多進程的運行模式有更清晰的認識更容易內(nèi)存泄露。 一、SwooleSwoole號稱重新定義了PHP,它是一個PHP擴展,使得PHP可以使用異步的方式執(zhí)行,就像node一樣,而且還能使用socket,為PHP提供了一系列異步IO、事件...
摘要:因為為單個請求創(chuàng)建的環(huán)境將在請求過程完成后立即銷毀??梢猿蔀閺姶蟮男阅茉鰪娖鳎峁┝藘?yōu)雅的結(jié)構(gòu)和代碼使用方式。你可以使用此命令快速安裝它,并訪問官方網(wǎng)站獲取更多信息。注意目前僅支持和。服務(wù)器不能使用。基準測試使用進行干凈的測試。 Swoole 是針對PHP的生產(chǎn)級異步編程框架。它是一種用純C語言編寫的PHP擴展,它使PHP開發(fā)人員能夠在PHP中編寫高性能,可擴展的并發(fā)TCP,UDP,U...
摘要:是為開發(fā)的生產(chǎn)級異步編程框架。因為單個請求創(chuàng)建的環(huán)境在請求執(zhí)行結(jié)束后會立即銷毀??梢蕴峁姶笮阅芏鴦t可以提供優(yōu)雅代碼結(jié)構(gòu)使用。在使用這個包之前,請確保你的機器安裝了正確的。建立并運行起來現(xiàn)在,你可以執(zhí)行以下的命令來啟動服務(wù)。 showImg(https://segmentfault.com/img/bVbaF89?w=1240&h=634); Swoole?是為 PHP 開發(fā)的生產(chǎn)級異...
摘要:的機器學(xué)習庫的機器學(xué)習庫,包括算法交叉驗證神經(jīng)網(wǎng)絡(luò)等內(nèi)容。在即將到來的大會上,她將和大家分享在機器學(xué)習領(lǐng)域的全新可能。入門總結(jié)入門相關(guān),如安裝配置基本使用等。 基于 Swoole 開發(fā) PHP 擴展 Swoole-1.9.7 增加了一個新特性,可以基于 Swoole 使用 C++ 語言開發(fā)擴展模塊,在擴展模塊中可以注冊 PHP 內(nèi)置函數(shù)和類。現(xiàn)在可以基于 Swoole 來編寫 PHP ...
摘要:使用改造應(yīng)用標簽空格分隔概述介紹是為開發(fā)的生產(chǎn)級異步編程框架。然后你可以看到以下信息現(xiàn)在可以通過訪問來進入應(yīng)用。 使用swoole改造laravel應(yīng)用 標簽(空格分隔): php 1. 概述 1.1 swoole介紹 Swoole 是為 PHP 開發(fā)的生產(chǎn)級異步編程框架。 他是一個純 C 開發(fā)的擴展, 他允許 PHP 開發(fā)者在 PHP 中寫 高性能,可擴展的并發(fā) TCP, UDP,...
閱讀 1140·2021-11-24 10:21
閱讀 2576·2021-11-19 11:35
閱讀 1678·2019-08-30 15:55
閱讀 1307·2019-08-30 15:54
閱讀 1205·2019-08-30 15:53
閱讀 3519·2019-08-29 17:21
閱讀 3319·2019-08-29 16:12
閱讀 3428·2019-08-29 15:23