日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用swoole来加速你的laravel应用

發(fā)布時間:2023/12/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用swoole来加速你的laravel应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 為什么要用swoole來加速laravel呢?

下圖展示了PHP的生命周期,正如你所看到的那樣,當(dāng)你每次運行PHP腳本的時候,PHP都需要初始化模塊并為你的運行環(huán)境啟動Zend引擎,中間會經(jīng)過語法分析、詞法分析,最后把你的代碼編譯為OpCode來交給Zend引擎執(zhí)行。

但是,這樣的生命周期需要在每次請求的時候都執(zhí)行一遍,因為單個請求創(chuàng)建的環(huán)境在請求執(zhí)行結(jié)束之后會立即銷毀。

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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

因此如果我們利用swoole內(nèi)置一個應(yīng)用級別的Server,并且所有的腳本文件在加載一次之后便可以保存在內(nèi)存中,那性能會有很大的提升。Swoole可以提供強大性能而Laravel則可以提供優(yōu)雅的代碼結(jié)構(gòu),這倆真是完美組合。

?

  • 安裝

首先需要安裝swoole擴展,具體可參考我的另一篇文章? ?鏈接

使用composer安裝swooletw插件

composer require swooletw/laravel-swoole

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

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

['providers' => [SwooleTW\Http\LaravelServiceProvider::class,], ]

如果你使用的Lumen,請將下面的代碼加到bootstrap/app.php

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

將包中的配置文件發(fā)布到 app/config 中

//config下生成swoole_http.conf和swoole_websocket.php以及routes下websocket.php php artisan vendor:publish --tag=laravel-swoole
  • 啟動

swoole直接對外服務(wù)

php artisan swoole:http start

然后可以看到以下信息:

Starting swoole http server... Swoole http server started: <http://127.0.0.1:1215>

然后你可以通過??http://127.0.0.1:1215?來訪問的你laravel應(yīng)用。

?

?

使用nginx代理對外服務(wù)(推薦這種)

nginx配置

map $http_upgrade $connection_upgrade {default upgrade;'' close; } 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;}# any php files must not be accessed#location ~* \.php$ {# return 404;#}location / {try_files $uri $uri/ @swoole;}location @swoole {set $suffix "";if ($uri = /index.php) {set $suffix ?$query_string;}proxy_set_header Host $http_host;proxy_set_header Scheme $scheme;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;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;# IF https# proxy_set_header HTTPS "on";proxy_pass http://127.0.0.1:1215$suffix;}

配置完成后可直接通過域名訪問。

?

最后說一下在使用中遇到的問題:

PHP中的超全局變量無法使用

  • $_POST
  • $_GET
  • $_SERVER
  • $_FILES
  • $_COOKIE
  • $_REQUEST

推薦通過 Illuminate\Http\Request 對象來獲取請求信息

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的使用swoole来加速你的laravel应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。