成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

使用 Swoole 來(lái)加速你的 Laravel 應(yīng)用

snifes / 1108人閱讀

摘要:是為開(kāi)發(fā)的生產(chǎn)級(jí)異步編程框架。因?yàn)閱蝹€(gè)請(qǐng)求創(chuàng)建的環(huán)境在請(qǐng)求執(zhí)行結(jié)束后會(huì)立即銷(xiāo)毀??梢蕴峁?qiáng)大性能而則可以提供優(yōu)雅代碼結(jié)構(gòu)使用。在使用這個(gè)包之前,請(qǐng)確保你的機(jī)器安裝了正確的。建立并運(yùn)行起來(lái)現(xiàn)在,你可以執(zhí)行以下的命令來(lái)啟動(dòng)服務(wù)。

Swoole?是為 PHP 開(kāi)發(fā)的生產(chǎn)級(jí)異步編程框架。 他是一個(gè)純 C 開(kāi)發(fā)的擴(kuò)展, 他允許 PHP 開(kāi)發(fā)者在 PHP 中寫(xiě) 高性能,可擴(kuò)展的并發(fā) TCP, UDP, Unix socket, HTTP, WebSocket 服務(wù), 而不需要擁有太多的非阻塞 I/O 編程和低級(jí)別的 Linux 內(nèi)核知識(shí)。 你可以把?Swoole?想象成 NodeJS, 但對(duì)于 PHP 來(lái)說(shuō)將有更高性能。

為什么要在 Swoole 上運(yùn)行 Laravel?

下圖展示了 PHP 的生命周期。正如你所看到的那樣,當(dāng)你每次運(yùn)行 PHP 腳本的時(shí)候,PHP都需要初始化模塊并為你的運(yùn)行環(huán)境啟動(dòng)Zend引擎。并且將 PHP 腳本編譯為 OpCodes 以便 Zend引擎執(zhí)行。

但是, 這樣的生命周期需要在每次請(qǐng)求的時(shí)候都執(zhí)行一遍。因?yàn)閱蝹€(gè)請(qǐng)求創(chuàng)建的環(huán)境在請(qǐng)求執(zhí)行結(jié)束后會(huì)立即銷(xiāo)毀。

換句話說(shuō), 在傳統(tǒng)的 PHP 生命周期中, 為了腳本執(zhí)行而浪費(fèi)了大量的時(shí)間去創(chuàng)建和銷(xiāo)毀資源。想象一下像 Laravel 這樣的框架, 在每次請(qǐng)求中需要加載多少文件? 同時(shí)也浪費(fèi)了大量的 I/O 操作

因此如果我們利用 Swoole 內(nèi)置一個(gè)應(yīng)用級(jí)別的 Server, 并且所有腳本文件在加載一次之后便可以保存在內(nèi)存中呢? 這就是為什么我們需要嘗試在 Swoole 上運(yùn)行 Laravel。 Swoole 可以提供強(qiáng)大性能而 Laravel 則可以提供優(yōu)雅代碼結(jié)構(gòu)使用。這倆兒真是完美組合 !

安裝

以下是 swooletw/laravel-swoole 的主要特點(diǎn):

在?Swoole 運(yùn)行?Laravel/Lumen 應(yīng)用

出色的性能提升至 30x

沙盒模式隔離應(yīng)用程序容器

支持在 Laravel 應(yīng)用中運(yùn)行 WebSocket 服務(wù)器

支持?Socket.io?協(xié)議

支持 Swoole 表跨進(jìn)程共享

使用 Composer 安裝:

$ composer require swooletw/laravel-swoole

這個(gè)包依賴(lài)于 Swoole?。在使用這個(gè)包之前,請(qǐng)確保你的機(jī)器安裝了正確的 Swoole 。使用下面的命令快速安裝(linux):

pecl install swoole

在安裝這個(gè)擴(kuò)展之后,你需要編輯 php.ini 添加 ?extension=swoole.so。

php -i | grep php.ini                      # check the php.ini file location
sudo echo "extension=swoole.so" > php.ini  # add the extension=swoole.so to the end of php.ini
php -m | grep swoole                       # check if the swoole extension has been enabled
訪問(wèn)?官網(wǎng)?獲取更多的信息。

注意:Swoole 現(xiàn)在只支持 Linux 和 OSX 。Windows 服務(wù)器現(xiàn)在還不支持。

然后,添加服務(wù)提供者:

如果你使用?Laravel ,在?config/app.php 服務(wù)提供者數(shù)組添加該服務(wù)提供者:

[
    "providers" => [
        SwooleTWHttpLaravelServiceProvider::class,
    ],
]

如果你使用?Lumen ,請(qǐng)將下面的代碼添加到?bootstrap/app.php

$app->register(SwooleTWHttpLumenServiceProvider::class);
這個(gè)包支持包自動(dòng)發(fā)現(xiàn)機(jī)制。如果你運(yùn)行 Laravel 5.5 以上版本,你可以跳過(guò)這一步。
建立并運(yùn)行起來(lái)

現(xiàn)在,你可以執(zhí)行以下的命令來(lái)啟動(dòng) Swoole HTTP 服務(wù)。

$ php artisan swoole:http start

然后你可以看到以下信息:

Starting swoole http server...
Swoole http server started: 

現(xiàn)在可以通過(guò)訪問(wèn)?http://127.0.0.1:1215 來(lái)進(jìn)入 Laravel 應(yīng)用。

基準(zhǔn)測(cè)試

使用 MacBook Air 13寸(2015年產(chǎn))及干凈的 Lumen 5.5 項(xiàng)目測(cè)試:
基準(zhǔn)測(cè)試工具:?wrk

wrk -t4 -c100 http://your.app
基于 FPM 的 Nginx
Running 10s test @ http://lumen.app:9999
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.14s   191.03ms   1.40s    90.31%
    Req/Sec    22.65     10.65    50.00     65.31%
  815 requests in 10.07s, 223.65KB read
Requests/sec:     80.93
Transfer/sec:     22.21KB
Swoole HTTP 服務(wù)
Running 10s test @ http://127.0.0.1:1215
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.58ms    4.74ms  68.73ms   81.63%
    Req/Sec     2.19k   357.43     2.90k    69.50%
  87879 requests in 10.08s, 15.67MB read
Requests/sec:   8717.00
Transfer/sec:      1.55MB
更多信息

在?Github Repo 查看官方包, 也可以參考?官方文檔?獲取更多信息。

更多現(xiàn)代化 PHP 知識(shí),請(qǐng)前往 Laravel / PHP 知識(shí)社區(qū)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30786.html

相關(guān)文章

  • 使用 Swoole 加速 Laravel

    摘要:因?yàn)闉閱蝹€(gè)請(qǐng)求創(chuàng)建的環(huán)境將在請(qǐng)求過(guò)程完成后立即銷(xiāo)毀??梢猿蔀閺?qiáng)大的性能增強(qiáng)器,提供了優(yōu)雅的結(jié)構(gòu)和代碼使用方式。你可以使用此命令快速安裝它,并訪問(wèn)官方網(wǎng)站獲取更多信息。注意目前僅支持和。服務(wù)器不能使用。基準(zhǔn)測(cè)試使用進(jìn)行干凈的測(cè)試。 Swoole 是針對(duì)PHP的生產(chǎn)級(jí)異步編程框架。它是一種用純C語(yǔ)言編寫(xiě)的PHP擴(kuò)展,它使PHP開(kāi)發(fā)人員能夠在PHP中編寫(xiě)高性能,可擴(kuò)展的并發(fā)TCP,UDP,U...

    didikee 評(píng)論0 收藏0
  • 了解swoole運(yùn)行模式,加速laravel應(yīng)用

    摘要:負(fù)責(zé)解釋執(zhí)行文件生成響應(yīng),最終返回給,展現(xiàn)至前端。相比于傳統(tǒng)架構(gòu),進(jìn)程模型最大的特點(diǎn)在于其多線程模式處理網(wǎng)絡(luò)請(qǐng)求,使得其能輕松應(yīng)對(duì)大量連接。這要求開(kāi)發(fā)人員對(duì)于多進(jìn)程的運(yùn)行模式有更清晰的認(rèn)識(shí)更容易內(nèi)存泄露。 一、SwooleSwoole號(hào)稱(chēng)重新定義了PHP,它是一個(gè)PHP擴(kuò)展,使得PHP可以使用異步的方式執(zhí)行,就像node一樣,而且還能使用socket,為PHP提供了一系列異步IO、事件...

    時(shí)飛 評(píng)論0 收藏0
  • 使用Swoole加速Laravel(正式環(huán)境中)

    摘要:如需要支持熱啟動(dòng),請(qǐng)自行谷歌,大概原理就是用監(jiān)控文件變更,如果更新了重啟如果正式環(huán)境中還可以自己寫(xiě)個(gè)部署腳本,后重啟服務(wù)等,方法很多不一一列舉。 1 Laravel的速度瓶頸在哪? 1.1 已有的一些優(yōu)化方法 1.1.1 laravel官方提供了一些優(yōu)化laravel的優(yōu)化方法 php artisan optimize php artisan config:cache php arti...

    vibiu 評(píng)論0 收藏0
  • 使用swoole改造laravel應(yīng)用

    摘要:使用改造應(yīng)用標(biāo)簽空格分隔概述介紹是為開(kāi)發(fā)的生產(chǎn)級(jí)異步編程框架。然后你可以看到以下信息現(xiàn)在可以通過(guò)訪問(wèn)來(lái)進(jìn)入應(yīng)用。 使用swoole改造laravel應(yīng)用 標(biāo)簽(空格分隔): php 1. 概述 1.1 swoole介紹 Swoole 是為 PHP 開(kāi)發(fā)的生產(chǎn)級(jí)異步編程框架。 他是一個(gè)純 C 開(kāi)發(fā)的擴(kuò)展, 他允許 PHP 開(kāi)發(fā)者在 PHP 中寫(xiě) 高性能,可擴(kuò)展的并發(fā) TCP, UDP,...

    cpupro 評(píng)論0 收藏0
  • PHP相關(guān)

    摘要:的機(jī)器學(xué)習(xí)庫(kù)的機(jī)器學(xué)習(xí)庫(kù),包括算法交叉驗(yàn)證神經(jīng)網(wǎng)絡(luò)等內(nèi)容。在即將到來(lái)的大會(huì)上,她將和大家分享在機(jī)器學(xué)習(xí)領(lǐng)域的全新可能。入門(mén)總結(jié)入門(mén)相關(guān),如安裝配置基本使用等。 基于 Swoole 開(kāi)發(fā) PHP 擴(kuò)展 Swoole-1.9.7 增加了一個(gè)新特性,可以基于 Swoole 使用 C++ 語(yǔ)言開(kāi)發(fā)擴(kuò)展模塊,在擴(kuò)展模塊中可以注冊(cè) PHP 內(nèi)置函數(shù)和類(lèi)?,F(xiàn)在可以基于 Swoole 來(lái)編寫(xiě) PHP ...

    lewinlee 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<