ホームページ >PHPフレームワーク >Laravel >Laravel から 15 ミリ秒で「hello world!」を返す方法

Laravel から 15 ミリ秒で「hello world!」を返す方法

藏色散人
藏色散人転載
2021-03-25 17:19:292095ブラウズ

laravel の次のチュートリアル コラムでは、Laravel が 15 ミリ秒以内に「hello world!」を返すようにする方法を紹介します。それを必要としている友達に届けます。助けてください!

まず、最も基本的な Hello world! という文字列を返すのが、Laravel をベースにしたプロジェクトの中で最も基本的なリクエスト処理だと思います。さらに、プロジェクト内の http リクエストは、ビジネス ロジックやデータベース クエリなど、より時間のかかる操作を実行することになり、これらのロジックの実行時間は制御不能で比較できません。言い換えれば、他のリクエストは Hello world! 文字列を返すよりも時間がかかります。したがって、最も基本的な Hello world リクエストの応答時間を比較することで、起動から実行の終了まで、Laravel フレームワークに対するさまざまな最適化の影響を確認できます。

推奨: 最新の 5 つの Laravel ビデオ チュートリアル

テスト パラメーター

#PHP バージョン##PHP-FPM
パラメータ バージョン
サーバー 1c プロセッサ、1G メモリ、1M 帯域幅
##8.0 ##プロセス管理
#

デフォルト設定の応答時間

让你的Laravel在 15 毫秒内返回一个

デフォルト設定で PHP をインストールした後、Hello world!平均して約 140ms かかります。次に、始めましょう!

ラウンド 1: Laravel キャッシュ

Laravel は、キャッシュ機能を有効にする非常に便利な artisan コマンドを提供します。ファイルの読み取り回数を効果的に削減します。 phpArtisanoptimizeコマンドには、phpArtisanconfig:cacheおよびphpArtisanRoute:cacheコマンドが含まれていますが、もう1つのFilesが表示されます。 .キャッシュ。次の 5 つのコマンドを順番に実行します:

root@Aliyun-ECS / # php artisan optimize
root@Aliyun-ECS / # php artisan config:cache
root@Aliyun-ECS / # php artisan event:cache
root@Aliyun-ECS / # php artisan route:cache
root@Aliyun-ECS / # php artisan view:cache

応答時間を見てみましょう:

让你的Laravel在 15 毫秒内返回一个

Laravel## であることがわかります。 # のキャッシュは基本的なリクエストであり、目立った影響はありません。

ラウンド 2: opcache をオンにする

今回は、最も明らかな高速化効果が得られる方法を使用することにしました:

オンにする opcache拡張子remi ソースを使用して php8 をインストールしたため、ここで opcache 拡張機能をインストールする方が簡単です。他のバージョンのインストールについては、自分で Google で調べてください。 。

root@Aliyun-ECS / # yum install php80-php-opcache
インストールが完了するのを待った後、

php を再起動し、拡張機能がインストールされているかどうかを確認します:

root@Aliyun-ECS / # systemctl restart php80-php-fpm
root@Aliyun-ECS / # php -i|grep opcache.enable
opcache.enable => On => On
opcache.enable_cli => On => On
opcache.enable_Laravel から 15 ミリ秒で「hello world!」を返す方法_override => Off => Off
ok、

opcache 拡張機能が有効になりました。Hello world! の応答時間を見てみましょう:

让你的Laravel在 15 毫秒内返回一个##OHHHHHH!効果は非常に明白で、突然

30ms

以内に低下し、応答時間が 5 倍 近く改善されます。 opcache がキャッシュに書き込んでいるため、最初のリクエストは遅くなることに注意してください。1 回のアクセスの後、速度は急激に上がります。ここで満足ですか?記事のタイトルを見てください、私たちはさらに努力する必要があります!

ラウンド 3: swoole をオンにする

swoole

モジュールが事前にアプリケーションをメモリにロードして、リクエストを処理するときに、ファイルの読み取りとロードのプロセスが軽減され、PHP ウィングが提供されます。以下の swoole 拡張機能をインストールします。他のバージョンについては Google で調べてください。 <pre class="brush:php;toolbar:false">root@Aliyun-ECS / # yum install php80-php-pecl-swoole</pre> いつものように、インストール後、インストールが成功したかどうかを確認します。

root@Aliyun-ECS / # systemctl restart php80-php-fpm
root@Aliyun-ECS / # php -i|grep swoole.enable
swoole.enable_coroutine => On => On
swoole.enable_library => On => On
swoole.enable_preemptive_scheduler => Off => Off

拡張機能は有効になっていますが、まだテストできません。

swoole

cli モードの拡張機能であるため、php-fpm は使用できません。したがって、http アプリケーションを cli モードで実装する必要があります。しかし実際には、http アプリケーションを自分たちで手動で作成する必要はなく、コミュニティにはすでにアプリケーションを作成している偉人がいます。ことわざにあるように、「先祖は木を植え、将来の世代はその日陰を楽しむ。」 laravel-swoole ソフトウェア パッケージを導入し、http サービスを開始します。これは非常に簡単です。 <pre class="brush:php;toolbar:false">// 引入软件包 root@Aliyun-ECS / # composer require swooletw/laravel-swoole // 发布配置文件 root@Aliyun-ECS / # php artisan vendor:publish --tag=laravel-swoole</pre>上記の 2 つの手順を実行すると、プロジェクトの

config

ディレクトリに 2 つの構成ファイル swoole_httpswoole_websocket が見つかります。基本的な Hello world! テスト。デフォルト設定を変更する必要はありません。SWOOLE_HTTP_HOST=0.0.0.0 と ## を .env ファイルに追加するだけです。プロジェクト #SWOOLE_HTTP_PORT=2020。これは、2020 ポートで http リスニング プログラムを開始することを意味します。 0.0.0.0 は、任意の IP にリモートからアクセスできることを意味します。

// .env
SWOOLE_HTTP_HOST=0.0.0.0
SWOOLE_HTTP_PORT=2020
基本的な構成の変更が完了しました。laravel-swoole の

http アプリケーションを開始します。

root@Aliyun-ECS / # php artisan swoole:http start
Starting swoole http server...Swoole http server started: <http:></http:>
この時点では、## にアクセスします。 #2020Port では、swoole

を使用して展開されたアプリケーションをテストできます。リクエストの応答時間を見てみましょう:

いいですね!

15ms让你的Laravel在 15 毫秒内返回一个 以内に直接実行してください。

opcache

がオンになっていてキャッシュが書き込まれるため、初回は時間がかかります。ただし、ここでの opcache 書き込みキャッシュは、opache 拡張機能のみを開く Round 2 の書き込みキャッシュよりもはるかに高速です。これはすべて swoole の結果です。 <h1> <span class="header-link octicon octicon-link"></span>結論</h1> <p><code>opcache を有効にせず、swoole 拡張機能のみを有効にして再度テストしたところ、応答時間が2 つと同じ 応答時間は、有効になっている両方の拡張機能で同じです。つまり、swoole を導入した後は、opcache は役に立たなくなるということですか?これについては偉い人たちにアドバイスを求めなければなりません。以下に簡単な比較を示します。

让你的Laravel在 15 毫秒内返回一个

実際の比較により、opcache 拡張機能と swoole 拡張機能を同時に有効にすることがわかります。 time の応答時間が最も速くなります。

その他の質問

  • PHP-FPM プロセス管理、マスター プロセスはなぜ作成されるのですか?非科学的

ありがとう

@Hesunfly さん、ご回答ありがとうございます。コマンドラインで php -i モードを使用して表示される拡張情報が、ページ上で phpinfo() を使用して表示される拡張情報と一致しない場合があります。以下は @Hesunfly の元の言葉からの引用です:
「一部のディストリビューションは、clifpm の構成を共有しています。たとえば、 for mac brew でインストールされた php には php.ini が 1 つしかありませんが、centos と ubuntu にインストールする場合、通常は clifpm を区別します。 "
Laravel から 15 ミリ秒で「hello world!」を返す方法

以上がLaravel から 15 ミリ秒で「hello world!」を返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。