在Laravel中使用swoole來(lái)取代nginx作為http服務(wù)器

1.是什么限制Laravel框架的速度酥泛?

Laravel框架啟動(dòng)的時(shí)候需要加載很多文件,再加上其出了名的生態(tài)環(huán)境好鳖宾,所以在開(kāi)發(fā)過(guò)程中我們就會(huì)發(fā)現(xiàn)有非常多的已經(jīng)造好的輪子光羞,這也就使得Laravel的一次啟動(dòng)的磁盤(pán)IO特別高(就是要加載很多文件嘛),博主之前的一遍博客Laravel5框架性能優(yōu)化技巧中也提到過(guò)一些優(yōu)化穴豫,但是并沒(méi)有實(shí)質(zhì)的解決磁盤(pán)IO高的問(wèn)題凡简。

既然已經(jīng)知道了問(wèn)題所在,那就很容易解決了精肃,只要每次啟動(dòng)Laravel的時(shí)候不都重新加載這些文件就好了潘鲫,這時(shí)候大名鼎鼎的swoole就登場(chǎng)了。

2.Swoole

Swoole號(hào)稱(chēng)重新定義了PHP肋杖,它是一個(gè)PHP擴(kuò)展,使得PHP可以使用異步的方式執(zhí)行挖函,就像node一樣状植,而且還能使用socket浊竟,為PHP提供了一系列異步IO、事件驅(qū)動(dòng)津畸、并行數(shù)據(jù)結(jié)構(gòu)功能振定。Swoole 可以廣泛應(yīng)用于互聯(lián)網(wǎng)、移動(dòng)通信肉拓、企業(yè)軟件后频、云計(jì)算、網(wǎng)絡(luò)游戲暖途、物聯(lián)網(wǎng)(IOT)卑惜、車(chē)聯(lián)網(wǎng)、智能家居等領(lǐng)域驻售。它可以大大提升項(xiàng)目的性能露久。

3.使用Swoole提升Laravel的性能

在現(xiàn)有的輪子中,感覺(jué)下面這兩個(gè)還是非常不錯(cuò)的欺栗,可以自行選擇

博主選擇了第一個(gè)毫痕,不要問(wèn)我為什么,任性迟几!然后我們就開(kāi)始吧消请!

使用composer安裝:

composer require swooletw/laravel-swoole

如果你使用的是laravel,那么在 config/app.php 的 providers 數(shù)組中加上

SwooleTW\Http\LaravelServiceProvider::class,</pre>

如果你使用的是lumen类腮,那么在 bootstrap/app.php 中加入如下代碼

 $app->register(SwooleTW\Http\LumenServiceProvider::class); 

將配置文件導(dǎo)出到 config 目錄下

php artisan vendor:publish --provider="SwooleTW\Http\HttpServiceProvider"

然后可以去 config/swoole_http.php 中配置信息

'server' => [
        'host' => env('SWOOLE_HTTP_HOST', '127.0.0.1'),
        'port' => env('SWOOLE_HTTP_PORT', '1215'),
        'options' => [
            'pid_file' => env('SWOOLE_HTTP_PID_FILE', base_path('storage/logs/swoole_http.pid')),
            'log_file' => env('SWOOLE_HTTP_LOG_FILE', base_path('storage/logs/swoole_http.log')),
            'daemonize' => env('SWOOLE_HTTP_DAEMONIZE', 1),
        ],
],

host和post不用多說(shuō)臊泰,options里面的具體配置可以去swoole官網(wǎng)查看詳細(xì)參數(shù)信息。

swoole_http.php 里還提供配置 providers 數(shù)組存哲,

'providers' => [
    // App\Providers\AuthServiceProvider::class,
]

因?yàn)槭褂胹woole作為http后因宇,這些providers會(huì)被存到內(nèi)存中,所以這里配置的是每次請(qǐng)求都想要重新注冊(cè)和重新啟動(dòng)的providers祟偷。

Artisan Commands

這個(gè)輪子完全使用artisan命令來(lái)操作察滑。

php artisan swoole:http start|stop|restart|reload 

依次是,啟動(dòng)/停止/重啟/重載修肠。

所以我們可以通過(guò)以下命令來(lái)啟動(dòng)swoole_http_server

php artisan swoole:http start</pre>

現(xiàn)在可以通過(guò)配置文件里的host和port去訪問(wèn)Laravel了贺辰,例如我的配置是: 127.0.0.1:1215

注意:該拓展是不支持熱啟動(dòng)的,所以每次有代碼更新都要重啟服務(wù) php artisan swoole:http restart 嵌施。當(dāng)然你也可以在linux上寫(xiě)一個(gè)腳本饲化,讓 git pull 代碼后自動(dòng)重啟服務(wù)。

4.性能測(cè)試

下面讓我們來(lái)看兩張圖吗伤。

使用swoole前:

[圖片上傳失敗...(image-a03e45-1514339910261)]

使用swoole后:

[圖片上傳失敗...(image-5cca42-1514339910261)]

這里是使用Apache的ab測(cè)試工具

ab -n1000 -c10 http://127.0.0.1:1215

我們可以驚奇的發(fā)現(xiàn)吃靠, Request per second 從原來(lái)的20多,提升到了600多足淆。將近提升了30倍左右巢块。啊礁阁,多么痛的領(lǐng)悟!族奢!

5.使用Nginx代理

swoole在官網(wǎng)也提到過(guò):swoole_http_server對(duì)Http協(xié)議的支持并不完整姥闭,建議僅作為應(yīng)用服務(wù)器。并且在前端增加Nginx作為代理越走。

那么棚品,我們就增加需要配置nginx.conf里的server:

server {
    listen 80;
    server_name your.domain.com;
    root /path/to/laravel/public;
    index index.php;

    location = /index.php {
        # Ensure that there is no such file named "not_exists"
        # in your "public" directory.
        try_files /not_exists @swoole;
    }

    location / {
        try_files $uri $uri/ @swoole;
    }

    location @swoole {
        set $suffix "";

        if ($uri = /index.php) {
            set $suffix "/";
        }

        proxy_set_header Host $host;
        proxy_set_header SERVER_PORT $server_port;
        proxy_set_header REMOTE_ADDR $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # IF https
        # proxy_set_header HTTPS "on";

        proxy_pass http://127.0.0.1:1215$suffix;
    }
}

至此,大功告成廊敌,你可以像平常一樣訪問(wèn)你的網(wǎng)站了铜跑。


原文:http://www.cnblogs.com/johnson108178/p/8109596.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市庭敦,隨后出現(xiàn)的幾起案子疼进,更是在濱河造成了極大的恐慌,老刑警劉巖秧廉,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伞广,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡疼电,警方通過(guò)查閱死者的電腦和手機(jī)嚼锄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蔽豺,“玉大人区丑,你說(shuō)我怎么就攤上這事⌒薅福” “怎么了沧侥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)魄鸦。 經(jīng)常有香客問(wèn)我宴杀,道長(zhǎng),這世上最難降的妖魔是什么拾因? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任旺罢,我火速辦了婚禮,結(jié)果婚禮上绢记,老公的妹妹穿的比我還像新娘扁达。我一直安慰自己,他們只是感情好蠢熄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布跪解。 她就那樣靜靜地躺著,像睡著了一般签孔。 火紅的嫁衣襯著肌膚如雪惠遏。 梳的紋絲不亂的頭發(fā)上砾跃,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音节吮,去河邊找鬼。 笑死判耕,一個(gè)胖子當(dāng)著我的面吹牛透绩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播壁熄,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼帚豪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了草丧?” 一聲冷哼從身側(cè)響起狸臣,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎昌执,沒(méi)想到半個(gè)月后烛亦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡懂拾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年煤禽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岖赋。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡檬果,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唐断,到底是詐尸還是另有隱情选脊,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布脸甘,位于F島的核電站恳啥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏斤程。R本人自食惡果不足惜角寸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忿墅。 院中可真熱鬧扁藕,春花似錦、人聲如沸疚脐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)棍弄。三九已至望薄,卻和暖如春疟游,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痕支。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工颁虐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卧须。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓另绩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親花嘶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子笋籽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 原文鏈接 必備品 文檔:Documentation API:API Reference 視頻:Laracasts ...
    layjoy閱讀 8,605評(píng)論 0 121
  • 背景## 正在做一個(gè)智能家居的項(xiàng)目,接收下位機(jī)(就是控制智能家居硬件模塊的HUB)協(xié)議解析椭员,Web端維護(hù)硬件狀態(tài)车海,...
    萬(wàn)年場(chǎng)保安閱讀 44,048評(píng)論 16 102
  • 必備品文檔:DocumentationAPI: API Reference視頻:Laracasts速查表:Lara...
    ethanzhang閱讀 5,739評(píng)論 0 68
  • 從你愛(ài)看的電影 到我喜歡的歌手 從我去過(guò)的旅行 到你吃過(guò)的晚餐 從你兒時(shí)的回憶 到我此刻的牢騷 從南方的天氣 到秋...
    Juinmai閱讀 196評(píng)論 0 0
  • 這一刻,我突然明白了隘击。我對(duì)他的愛(ài)戀侍芝,對(duì)他的不舍,對(duì)他一切一切美好的幻想都源于三個(gè)字闸度,那就是得不到竭贩。我終將明白那不是...
    執(zhí)子之手方知子丑閱讀 744評(píng)論 0 1