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

資訊專欄INFORMATION COLUMN

用 RoadRunner 加速 Laravel 應(yīng)用

VincentFF / 2194人閱讀

摘要:是一個(gè)用語(yǔ)言實(shí)現(xiàn)的高性能服務(wù)器,你沒(méi)看錯(cuò),是語(yǔ)言實(shí)現(xiàn)的。首先用實(shí)現(xiàn)了一個(gè)高性能的服務(wù)器,然后通過(guò)把請(qǐng)求轉(zhuǎn)發(fā)給多個(gè),會(huì)把請(qǐng)求重新封裝成交給框架進(jìn)行處理。娛樂(lè)測(cè)試使用測(cè)試的頁(yè)面,個(gè)并發(fā)用戶,持續(xù)秒,對(duì)比和。更新加了解析,解決數(shù)據(jù)丟失

RoadRunner是一個(gè)用Go語(yǔ)言實(shí)現(xiàn)的高性能PSR-7服務(wù)器,你沒(méi)看錯(cuò),是Go語(yǔ)言實(shí)現(xiàn)的。

RoadRunner首先用Go實(shí)現(xiàn)了一個(gè)高性能的服務(wù)器,然后通過(guò)goridge IPC把請(qǐng)求轉(zhuǎn)發(fā)給多個(gè)PHP CLI Worker,Worker會(huì)把請(qǐng)求重新封裝成PSR-7 Request交給框架進(jìn)行處理。

娛樂(lè)測(cè)試

使用siege測(cè)試Laravel的Welcome頁(yè)面,250個(gè)并發(fā)用戶,持續(xù)30秒,對(duì)比Nginx + FPM和RoadRunner。

Nginx + FPM:

$ siege --no-parser -c 250 -t 30s http://127.0.0.1:3000/  > /dev/null
** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...

Lifting the server siege...
Transactions:                   2032 hits
Availability:                  97.83 %
Elapsed time:                  29.19 secs
Data transferred:               4.51 MB
Response time:                  2.64 secs
Transaction rate:              69.61 trans/sec
Throughput:                     0.15 MB/sec
Concurrency:                  183.50
Successful transactions:        2032
Failed transactions:              45
Longest transaction:           27.34
Shortest transaction:           0.

RoadRunner(4 worker):

$ siege --no-parser -c 250 -t 30s http://127.0.0.1:8080/  > /dev/null
** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...

Lifting the server siege...
Transactions:                  61417 hits
Availability:                 100.00 %
Elapsed time:                  29.26 secs
Data transferred:             135.95 MB
Response time:                  0.12 secs
Transaction rate:            2099.01 trans/sec
Throughput:                     4.65 MB/sec
Concurrency:                  249.06
Successful transactions:       61417
Failed transactions:               0
Longest transaction:            0.20
Shortest transaction:           0.05
如何加速Laravel應(yīng)用 RoadRunner安裝

RoadRunner已經(jīng)提供了預(yù)編譯的執(zhí)行文件,下載對(duì)應(yīng)平臺(tái)的版本即可,配置文件可用RoadRunner提供的:Using RoadRunner.

Laravel配置

安裝依賴:

composer require spiral/roadrunner zendframework/zend-diactoros symfony/psr-http-message-bridge

在Laravel項(xiàng)目創(chuàng)建一個(gè)psr-worker.php,代碼修改來(lái)自tobias-kuendig:

make(IlluminateContractsHttpKernel::class);

while ($req = $psr7->acceptRequest()) {
    try {
        $httpFoundationFactory = new HttpFoundationFactory();

        if (strpos($req->getHeaderLine("content-type"), "application/json") === 0) {
            $body = $req->getBody();
            $parsedBody = json_decode($body, true);
            $req = $req->withParsedBody($parsedBody);
        }
        $symfonyReq = $httpFoundationFactory->createRequest($req);
        $request = IlluminateHttpRequest::createFromBase($symfonyReq);

        $response = $kernel->handle($request);

        $psr7factory = new DiactorosFactory();
        $psr7response = $psr7factory->createResponse($response);
        $psr7->respond($psr7response);
    } catch (Throwable $e) {
        $psr7->getWorker()->error((string)$e);
    }
}

運(yùn)行rr serve -v搞定。

其他問(wèn)題

Issue里提到了POST數(shù)據(jù)會(huì)丟失,簡(jiǎn)單地測(cè)試了一下,沒(méi)有重現(xiàn),兼容性方面還需持續(xù)關(guān)注。

更新1:加了JSON解析,解決POST數(shù)據(jù)丟失

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

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

相關(guān)文章

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

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

    snifes 評(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)稱重新定義了PHP,它是一個(gè)PHP擴(kuò)展,使得PHP可以使用異步的方式執(zhí)行,就像node一樣,而且還能使用socket,為PHP提供了一系列異步IO、事件...

    時(shí)飛 評(píng)論0 收藏0
  • 使 Swoole 加速 Laravel

    摘要:因?yàn)闉閱蝹€(gè)請(qǐng)求創(chuàng)建的環(huán)境將在請(qǐng)求過(guò)程完成后立即銷毀??梢猿蔀閺?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加速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

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

0條評(píng)論

閱讀需要支付1元查看
<