この記事では、Swoole を介して Laravel/Lumen を高速化するための関連情報を主に紹介します。この記事では、学習や仕事に役立つ特定の学習価値があります。一緒に勉強して勉強してください。
LaravelS - 巨人の肩の上に立つ
この記事では、Laravel/Lumen を高速化するための LaravelS の関連コンテンツを中心に紹介します。 Swoole について:rocket: Swoole を通じて Laravel/Lumen を加速します。S は Swoole、スピード、ハイパフォーマンスを表します。
特長
高性能Swoole
構築-in Http サーバー
常駐メモリ
スムーズな再起動
Laravel と Lumen の両方をサポート、メインストリーム バージョンと互換性あり
シンプルで箱から出してすぐに使用可能
お役に立ちましたら、Star Me LaravelS
要件
説明 | |
---|---|
>= 5.5.9 | |
>= 1.7.19 から始まる最新の安定バージョンを推奨します2.0.12 PHP5 | |
>= 5.1 | |
は廃止されましたサポートされている | zlib、ローカル libz が利用可能かどうかを確認する ldconfig -p|grep libz
インストール
# 在你的Laravel/Lumen项目的根目录下执行 composer require "hhxsv5/laravel-s:~1.0" -vvv # 确保你的composer.lock文件是在版本控制中2. サービスプロバイダーを追加しますLaravel: ファイル config/app.php
'providers' => [ //... Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class, ],Lumen を変更します: ファイル bootstrap/app.php
$app->register(Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class);3 を変更します。設定ファイル
php artisan laravels publishを公開します。特殊なケース: LaravelS の最下層である設定 laravels.php を手動でロードする必要はありません。自動的にロードされました。
// 不必手动加载,但加载了也不会有问题 $app->configure('laravels');4. config/laravels.php の設定を変更します: 監視 IP、ポートなど。「設定項目」を参照してください。
#実行php artisan laravels {start|stop|restart|reload|publish}
stop | |
restart | |
reload | |
publish | |
## は Nginx |
# で使用されます##通常、これらのイベントでは、一部のグローバル変数または静的変数をリセットまたは破棄したり、現在のリクエストと応答を変更したりできます。 laravels.received_request swoole_http_request を Illuminate\Http\Request に変換した後、Laravel カーネルがリクエストを処理する前。
// 修改`app/Providers/EventServiceProvider.php`, 添加下面监听代码到boot方法中 // 如果变量$exents不存在,你也可以调用\Event::listen()。 $events->listen('laravels.received_request', function (\Illuminate\Http\Request $req) { $req->query->set('get_key', 'hhxsv5');// 修改querystring $req->request->set('post_key', 'hhxsv5'); // 修改post body });
$events->listen('laravels.generated_response', function (\Illuminate\Http\Request $req, \Symfony\Component\HttpFoundation\Response $rsp) { $rsp->headers->set('header-key', 'hhxsv5');// 修改header });
プロジェクトで swoole_http_server インスタンスを使用する
/** * @var \swoole_http_server */ $swoole = app('swoole');// Singleton var_dump($swoole->stats());
注意事項
Illuminate\Http \Request オブジェクトを通じて推奨リクエスト情報の取得には、$_SERVER、$_GET、$_POST、$_FILES、$_COOKIE、$_REQUEST、$_SESSION、$_ENV と互換性のあるものは使用できません。 public function form(\Illuminate\Http\Request $request)
{
$name = $request->input('name');
$all = $request->all();
$sessionId = $request->cookie('sessionId');
$photo = $request->file('photo');
$rawContent = $request->getContent();
//...
}
リクエストには、echo、vardump()、print_r() と互換性のある Illuminate\Http\Response オブジェクトを返すことをお勧めします。 exit() や # などの関数は使用できません。 ##die()、header()、setcookie()、http_response_code()。
public function json()
{
return response()->json(['time' => time()])->header('header1', 'value1')->withCookie('c1', 'v1');
}
ユーザーがグローバルに宣言した静的変数は、手動でクリーンアップまたはリセットする必要があります。
要素を静的変数またはグローバル変数に無限に追加すると、メモリがいっぱいになります。
// 某类 class Test { public static $array = []; public static $string = ''; } // 某控制器 public function test(Request $req) { // 内存爆满 Test::$array[] = $req->input('param1'); Test::$string .= $req->input('param2'); }
TODO
##MySQL/Redis の接続プール。
MySQL/Redis/Http をラップするコルーチン クライアント。
Swoole 2.1 の自動コルーチン サポート。
以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
Laravel フレームワークが検索機能を実装する方法モデル層の CURD 操作
以上がLaravelS が Swoole を通じて Laravel/Lumen を高速化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。