ホームページ  >  記事  >  ウェブフロントエンド  >  Laravelフレームワークのパフォーマンスチューニング方法

Laravelフレームワークのパフォーマンスチューニング方法

一个新手
一个新手オリジナル
2017-10-25 13:56:152056ブラウズ

その後のまとめです。チューニングプロセスで多くの落とし穴を経験した後、最終的に予備的なパフォーマンステスト計画を完成させて実装し、実際のテストデータを通じてLaravel開発プロセスにおけるいくつかの実践的なスキルを要約しました。

0x00の起源

最近、同僚は、Laravelで書かれたアプリケーションの応答が少し遅く、20を超える同時アプリケーションがCPUをいっぱいにしていると報告しました...遅い問題を解決するために、いくつかのインターフェイスはnodejsで書かれています。

そして私の最初の反応は、人気のあるフレームワークがどうしてこんなにひどいものになるのだろうかということでした。使い方に何か問題があるはずです。それを知るために、私は Laravel アプリケーションのパフォーマンス調整の旅を始めました。

0x01 チューニングのヒント

このパフォーマンス テスト計画で使用される最適化のヒントは、主に Laravel フレームワーク自体とそれが提供するツールに基づいています。

  1. アプリケーションのデバッグをオフにする app.debug=falseapp.debug=false

  2. 缓存配置信息 php artisan config:cache

  3. 缓存路由信息 php artisan router:cache

  4. 类映射加载优化 php artisan optimize

  5. 自动加载优化 composer dumpautoload

  6. 根据需要只加载必要的中间件

  7. 使用即时编译器(JIT),如:HHVM、OPcache

  8. 使用 PHP 7.x

除了以上优化技巧之外,还有很多编码上的实践可以提升 Laravel 应用性能,在本文中暂时不会做说明。(也可以关注我的后续文章)

1. 关闭应用 debug

打开应用根目录下的 .env 文件,把 debug 设置为 false。

APP_DEBUG=false

2. 缓存配置信息

php artisan config:cache

运行以上命令可以把 config 文件夹里所有配置信息合并到一个 bootstrap/cache/config.php 文件中,减少运行时载入文件的数量。

php artisan config:clear

运行以上命令可以清除配置信息的缓存,也就是删除 bootstrap/cache/config.php 文件

3. 缓存路由信息

php artisan route:cache

运行以上命令会生成文件 bootstrap/cache/routes.php。路由缓存可以有效的提高路由器的注册效率,在大型应用程序中效果越加明显。

php artisan route:clear

运行以上命令会清除路由缓存,也就是删除 bootstrap/cache/routes.php 文件。

4. 类映射加载优化

php artisan optimize --force

运行以上命令能够把常用加载的类合并到一个文件中,通过减少文件的加载来提高运行效率。这个命令会生成 bootstrap/cache/compiled.phpbootstrap/cache/services.json 两个文件。

通过修改 config/compile.php 文件可以添加要合并的类。

在生产环境中不需要指定 --force 参数文件也可以自动生成。

php artisan clear-compiled

运行以上命令会清除类映射加载优化,也就是删除 bootstrap/cache/compiled.phpbootstrap/cache/services.json 两个文件。

5. 自动加载优化

composer dumpautoload -o

Laravel 应用程序是使用 composer 来构建的。这个命令会把 PSR-0 和 PSR-4 转换为一个类映射表来提高类的加载速度。

注意:php artisan optimize --force 命令里已经做了这个操作。

6. 根据需要只加载必要的中间件

Laravel 应用程序内置了并开启了很多的中间件。每一个 Laravel 的请求都会加载相关的中间件、产生各种数据。在 app/Http/Kernel.php 中注释掉不需要的中间件(如 session 支持)可以极大的提升性能。

7. 使用即时编译器

HHVM 和 OPcache 都能轻轻松松的让你的应用程序在不用做任何修改的情况下,直接提高 50% 或者更高的性能。

8. 使用 PHP 7.x

只能说 PHP 7.x 比起之前的版本在性能上有了极大的提升。

嗯,限于你的真实企业环境,这个也许很长时间内改变不了,算我没说。

0x02 测试方案

我们使用简单的 Apache ab 命令仅对应用入口文件进行测试,并记录和分析数据。

  1. 仅对应用的入口文件 index.php 进行测试,访问 “/” 或者 “/index.php” 返回框架的欢迎页面。更全面的性能测试需要针对应用的更多接口进行测试。

  2. 使用 Apache ab 命令。ab -t 10 -c 10 {url}

  3. キャッシュ構成情報 phpArtisan config:cache

    🎜🎜キャッシュルーティング情報 php職人ルーター:キャッシュ🎜🎜🎜🎜クラスマップ読み込みの最適化php職人最適化🎜🎜🎜🎜自動読み込みの最適化composer dumpautoload🎜🎜🎜🎜あるものだけを読み込みます必要に応じて必要 ミドルウェア 🎜🎜🎜🎜 は、HHVM、OPcache などのジャストインタイム コンパイラ (JIT) を使用します 🎜🎜🎜🎜 PHP 7.x を使用します🎜🎜
🎜 上記の最適化手法に加えて、 , 多くのコーディング手法があります。Laravel アプリケーションのパフォーマンスを向上させることができますが、この記事では当面説明しません。 (私のフォローアップ記事もご覧ください) 🎜

1. アプリケーションのデバッグを閉じる

🎜 アプリケーションのルート ディレクトリで .env ファイルを開き、debug を false に設定します。 🎜rrreee

2. 構成情報のキャッシュ

rrreee🎜上記のコマンドを実行すると、config フォルダー内のすべての構成情報が 1 つの bootstrap/cache/config.php ファイルにマージされ、実行する必要がある時点でロードされるファイルの数。 🎜rrreee🎜上記のコマンドを実行して、構成情報のキャッシュをクリアします。つまり、bootstrap/cache/config.php ファイルを削除します🎜

3. ルーティング情報をキャッシュします

rrreee🎜上記のコマンドを実行して、ファイル bootstrap/cache/routes.php を生成します。ルート キャッシュはルーターの登録効率を効果的に向上させることができ、その効果は大規模なアプリケーションでより顕著になります。 🎜rrreee🎜上記のコマンドを実行すると、ルーティング キャッシュがクリアされます。これは、bootstrap/cache/routes.php ファイルを削除することを意味します。 🎜

4. クラス マッピングの読み込みの最適化

rrreee🎜 上記のコマンドを実行すると、一般的に読み込まれるクラスを 1 つのファイルにマージでき、ファイルの読み込みが軽減され、操作効率が向上します。このコマンドは、bootstrap/cache/compiled.phpbootstrap/cache/services.json の 2 つのファイルを生成します。 🎜🎜 config/compile.php ファイルを変更することで、マージするクラスを追加できます。 🎜🎜本番環境では、--force パラメータ ファイルを指定する必要はなく、自動的に生成できます。 🎜rrreee🎜上記のコマンドを実行すると、クラス マップの読み込みの最適化がクリアされます。つまり、2 つのファイル bootstrap/cache/compiled.phpbootstrap/cache/services.json が削除されます。 >。 🎜

5. 自動読み込みの最適化

rrreee🎜Laravel アプリケーションは、composer を使用して構築されます。このコマンドは、PSR-0 と PSR-4 をクラス マッピング テーブルに変換して、クラスの読み込み速度を向上させます。 🎜
🎜注: この操作は、phpArtisanoptimize --force コマンドですでに実行されています。 🎜

6. 必要なミドルウェアのみを必要に応じてロードする

🎜 Laravel アプリケーションには多くのミドルウェアが組み込まれており、有効になっています。すべての Laravel リクエストは、関連するミドルウェアをロードし、さまざまなデータを生成します。 app/Http/Kernel.php 内の不要なミドルウェア (セッション サポートなど) をコメント アウトすると、パフォーマンスが大幅に向上する可能性があります。 🎜

7. ジャストインタイム コンパイラを使用する

🎜HHVM と OPcache を使用すると、変更を加えることなく、アプリケーションのパフォーマンスを簡単に 50% 以上向上させることができます。 🎜

8. PHP 7.x の使用

🎜 PHP 7.x は以前のバージョンと比較してパフォーマンスが大幅に向上しているとしか言えません。 🎜
🎜 まあ、実際の企業環境に限定すると、これは長い間変わらないかもしれませんが、私はそれについては触れませんでした。 🎜
🎜0x02 テスト計画🎜🎜 シンプルな Apache ab コマンドを使用して、アプリケーション エントリ ファイルのみをテストし、データを記録して分析します。 🎜🎜🎜🎜アプリケーションのエントリファイルindex.phpのみをテストします。「/」または「/index.php」にアクセスして、フレームワークのようこそページに戻ります。より包括的なパフォーマンス テストには、アプリケーションのより多くのインターフェイスのテストが必要です。 🎜🎜🎜🎜Apache abコマンドを使用します。 ab -t 10 -c 10 {url}。このコマンドは、URL に対する 10 個のリクエストを同時に開始し、10 秒間継続することを意味します。コマンド内の特定のパラメーター設定は、テストするサーバーのパフォーマンスに基づいて選択する必要があります。 🎜🎜🎜🎜マシンの変動によるデータエラーを回避するため、各テスト条件では複数のabコマンドを実行してコマンドの実行結果を記録し、1秒あたりに処理されるリクエストの数とリクエストの応答時間に焦点を当て、異常値を分析して排除します。 🎜
  • テスト条件を調整するたびに、ブラウザでようこそページにアクセスし、テスト条件の変更によるアクセスエラーがないことを確認する必要があります。ページアクセスエラーが発生すると、テスト結果が不正確になります。

  • サーバー環境の説明

    特定の環境から分離されたテストデータはすべて無意味であり、同様の条件でのみ比較できます。

    1. この環境は、8G メモリ、2.8GHz プロセッサ、SSD ハードドライブを搭載した Mac 上で実行されます。

    2. テストサーバーはHomesteadを使用して構築されています。仮想マシンはシングルコア CPU と 2G メモリで構成されています。

    3. サーバーの PHP バージョンは 7.1 です。指定しない場合、OPcache がオンになります。

    4. テストされた Laravel アプリケーションはバージョン 5.2 で作成されました。 appHttproutes.php には 85 個のルートが定義されています。 appHttproutes.php 中定义了 85 个路由。

    5. 测试过程中除了虚拟机、终端及固定的浏览器窗口外,没有会影响机器的程序运行。

    以上的数据,大家在自己进行测试时可以参考。

    0x03 测试过程及数据

    1. 未做任何优化

    1.1 操作

    • 按照以下检查项执行相应的操作。

    • 运行 ab -t 10 -c 10 http://myurl.com/index.php

    基础检查项

    • .env 文件中 APP_DEBUG=true

    • 不存在 bootstrap/cache/config.php

    • 不存在 bootstrap/cache/routes.php

    • 不存在 bootstrap/cache/compiled.phpbootstrap/cache/services.json

    • app/Http/Kernel.php 中开启了大部分的中间件

    • 浏览器访问 Laravel 应用程序欢迎页确保正常访问

    1.2 数据记录

    Laravelフレームワークのパフォーマンスチューニング方法

    2. 关闭应用debug

    2.1 操作

    • 在步骤 1 基础上修改 .env 文件中 APP_DEBUG=false

    • 浏览器访问 Laravel 应用程序欢迎页确保正常访问。

    • 运行 ab -t 10 -c 10 http://myurl.com/index.php

    2.2 数据记录

    Laravelフレームワークのパフォーマンスチューニング方法

    2.3 对比结果

    与步骤 1 结果比较发现:关闭应用 debug 之后,每秒处理请求数从 26-34 上升到 33-35,请求响应时间从 大部分 300ms 以上下降到 290ms 左右,效果不太明显,但确实有一定的提升。

    注意:这部分与应用中的日志等使用情况有比较大的关联。

    3. 开启缓存配置信息

    3.1 操作

    • 在步骤 2 基础上,运行 php artisan config:cache,确认生成 bootstrap/cache/config.php

    • 浏览器访问 Laravel 应用程序欢迎页确保正常访问。

    • 运行 ab -t 10 -c 10 http://myurl.com/index.php

    3.2 数据记录

    Laravelフレームワークのパフォーマンスチューニング方法

    3.3 对比结果

    与步骤 2 结果比较发现:开启配置信息缓存之后,每秒处理请求数从 33-35 上升到 36-38,请求响应时间从 290ms 左右下降到 260ms 左右,效果不太明显,但确实有一定的提升。

    4. 开启缓存路由信息

    4.1 操作

    • 在步骤 3 基础上,运行 php artisan route:cache,确认生成 bootstrap/cache/routes.php

    • 浏览器访问 Laravel 应用程序欢迎页确保正常访问。

    • 运行 ab -t 10 -c 10 http://myurl.com/index.php

    4.2 数据记录

    Laravelフレームワークのパフォーマンスチューニング方法

    4.3 对比结果

    与步骤 3 结果比较发现:开启路由信息缓存之后,每秒处理请求数从 36-38 上升到 60 左右,请求响应时间从 260ms 下降到 160ms 左右,效果显著,从 TPS 看,提升了 70%。

    5. 删除不必要的中间件

    5.1 操作

    • 在步骤 4 基础上,注释掉不必要的中间件代码。

    • 浏览器访问 Laravel 应用程序欢迎页确保正常访问。

    • 运行 ab -t 10 -c 10 http://myurl.com/index.php

      🎜🎜 テストプロセス中、仮想マシン、ターミナル、固定ブラウザウィンドウを除いて、マシンの動作に影響を与えるプログラムはありませんでした。 🎜🎜🎜🎜上記のデータは、独自のテストを行う際に参照できます。 🎜

      0x03 テスト プロセスとデータ

      1. 最適化は行われていません

      1.1 操作

        🎜🎜以下のチェック項目に従ってください。 該当する動作を行います。 🎜🎜🎜🎜ab -t 10 -c 10 http://myurl.com/index.php🎜🎜
      を実行🎜🎜基本的なチェック項目🎜🎜
        APP_DEBUG=true🎜🎜🎜🎜 は 🎜🎜.env ファイルに存在しませんbootstrap/cache/config.php🎜🎜🎜🎜 は存在しません bootstrap/cache/routes.php🎜🎜🎜🎜 は存在しませんbootstrap/cache/compiled.phpbootstrap/cache/services.json 🎜🎜🎜🎜 ほとんどのミドルウェアは app/Http/Kernel.php で有効になります🎜🎜🎜🎜 通常のアクセスを確保するには、ブラウザで Laravel アプリケーションのようこそページにアクセスしてください🎜🎜

      1.2データレコード

      🎜Laravelフレームワークのパフォーマンスチューニング方法 🎜

      2. アプリケーションのデバッグをオフにする

      2.1 操作

        🎜🎜 ベースの .env ファイルを変更します。ステップ 1 で APP_DEBUG=false。 🎜🎜🎜🎜通常のアクセスを確認するには、ブラウザで Laravel アプリケーションのようこそページにアクセスしてください。 🎜🎜🎜🎜ab -t 10 -c 10 http://myurl.com/index.php を実行します。 🎜🎜

      2.2 データの記録

      🎜Laravelフレームワークのパフォーマンスチューニング方法🎜

      2.3 結果の比較

      🎜手順 1 の結果と比較すると、アプリケーションのデバッグをオフにした後、処理されたリクエストの数が減少していることがわかります。 1 秒あたりの速度は 26 ~ 34 から 33 ~ 35 に増加し、リクエストの応答時間は 300 ミリ秒以上から約 290 ミリ秒に減少しました。その効果は明ら​​かではありませんが、確かに一定の改善が見られます。 🎜🎜
      🎜注: この部分は、アプリケーションでのログの使用法と密接に関連しています。 🎜

      3. キャッシュ構成情報を有効にする

      3.1 操作

        🎜🎜ステップ 2 に基づいて、 を実行します。 php 職人 config:cachebootstrap/cache/config.php が生成されることを確認します。 🎜🎜🎜🎜通常のアクセスを確認するには、ブラウザで Laravel アプリケーションのようこそページにアクセスしてください。 🎜🎜🎜🎜ab -t 10 -c 10 http://myurl.com/index.php を実行します。 🎜🎜

      3.2 データの記録

      🎜Laravelフレームワークのパフォーマンスチューニング方法🎜

      3.3 結果の比較

      🎜手順 2 の結果と比較すると、構成情報キャッシュをオンにした後、数値が1 秒あたりに処理されるリクエストの数は 33 ~ 35 から 36 ~ 38 に増加し、リクエストの応答時間は約 290 ミリ秒から約 260 ミリ秒に減少しました。その効果は明ら​​かではありませんが、確かに一定の改善が見られます。 🎜🎜

      4. キャッシュされたルーティング情報をオンにする

      4.1 操作

        🎜🎜ステップ 3 に基づいて、phpArtisan を実行します。 Route:cache で、bootstrap/cache/routes.php が生成されることを確認します。 🎜🎜🎜🎜通常のアクセスを確認するには、ブラウザで Laravel アプリケーションのようこそページにアクセスしてください。 🎜🎜🎜🎜ab -t 10 -c 10 http://myurl.com/index.php を実行します。 🎜🎜

      4.2 データの記録

      🎜Laravelフレームワークのパフォーマンスチューニング方法🎜

      4.3 結果の比較

      🎜手順 3 の結果と比較すると、経路情報キャッシュを ON にすると、 1 秒あたりに処理されるリクエストの数は 36 ~ 38 から約 60 に増加し、リクエストの応答時間は 260 ミリ秒から約 160 ミリ秒に減少しました。TPS の観点からは、その効果は 70% 増加しました。 🎜🎜

      5. 不要なミドルウェアを削除します

      5.1 操作

        🎜🎜手順 4 に基づいて、不要なミドルウェア コードをコメントアウトします。 🎜🎜🎜🎜通常のアクセスを確認するには、ブラウザで Laravel アプリケーションのようこそページにアクセスしてください。 🎜🎜🎜🎜ab -t 10 -c 10 http://myurl.com/index.php を実行します。 🎜

    Laravelフレームワークのパフォーマンスチューニング方法

    注: このテストではすべてのミドルウェアをコメントアウトしました。実際の状況では、必要なミドルウェアのみを保持するように努める必要があります。

    5.2 データの記録

    Laravelフレームワークのパフォーマンスチューニング方法

    5.3 結果の比較

    ステップ4の結果と比較すると、不要なミドルウェアを削除した後、1秒あたりのリクエスト処理数が約60から約60に増加したことがわかります。リクエストの応答時間は 160 ミリ秒から約 110 ミリ秒になり、TPS の観点からは、その効果は 50% 増加しました。

    6. クラスマップ読み込みの最適化をオンにする

    6.1 操作

    • ステップ 5 に基づいて、phpArtisanoptimize --force を実行し、bootstrap/cache/compiled が有効になっていることを確認します。 phpbootstrap/cache/services.json が生成されます。

      php artisan optimize --force,确认生成 bootstrap/cache/compiled.phpbootstrap/cache/services.json

    • 浏览器访问 Laravel 应用程序欢迎页确保正常访问。

    • 运行 ab -t 10 -c 10 http://myurl.com/index.php

    6.2 数据记录

    Laravelフレームワークのパフォーマンスチューニング方法

    6.3 对比结果

    与步骤 5 结果比较发现:做了类映射加载优化之后,每秒处理请求数从 90 上升到 110,请求响应时间从 110ms 下降到 100ms 以下,效果还是比较明显的。

    7. 关闭 OPcache

    7.1 操作

    • 在步骤 6 基础上,关闭 PHP 的 OPcache,并重启服务器。通过 phpinfo() 的 Zend OPcache 确认 OPcache 已经关闭。

    • 浏览器访问 Laravel 应用程序欢迎页确保正常访问。

    • 运行 ab -t 10 -c 10 http://myurl.com/index.php

    7.2 数据记录

    Laravelフレームワークのパフォーマンスチューニング方法

    7.3 对比结果

    与步骤 6 结果比较发现:关闭 OPcache 之后,每秒处理请求数从 110 下降到 15,请求响应时间从 100ms 以下上升到 650ms 以上。开启与关闭 OPcache,数据上竟有几倍的差别。

    此后,我重新开启了 PHP 的 OPcache,数据恢复到步骤 6 水平。

    0x04 踩过的坑

    1. [LogicException] Unable to prepare route [/] for serialization. Uses Closure.

    在运行 php artisan route:cache 命令时报这个错误。

    原因:路由文件中处理“/”时使用了闭包的方式。要运行该命令,路由的具体实现不能使用闭包方式。

    修改方案:将路由的具体实现放到控制器中来实现。

    2. [Exception] Serialization of 'Closure' is not allowed.

    在运行 php artisan route:cache 命令时报这个错误。

    原因:路由文件中定义了重复的路由。

    修改方案:排查路由文件中的重复路由并修改。尤其要注意 resource 方法很可能导致与其方法重复。

    3. [RuntimeException] Invalid filename provided.

    在运行 php artisan optimize --force 命名时报这个错误。

    原因:在加载需要编译的类时没有找到相应的文件。5.2 版本的 vendor/laravel/framework/src/Illuminate/Foundation/Console/Optimize/config.php 中定义了要编译的文件路径,但不知道为什么 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/ActiveRecords.php 没有找到,所以报了这个错误。

    修改方案:暂时注释掉了以上 config.php 中的 ../ActiveRecords.php 一行。

    4. InvalidArgumentException in FileViewFinder.php line 137: View [welcome] not found.

    在运行 php artisan config:cache 之后,浏览器上访问 Laravel 应用程序欢迎页报这个错误。

    原因:Laravel 应用程序服务器是通过 Homestead 在虚拟机上搭建的。而这个命令我是在虚拟机之外运行的,导致生成的 config.php 中的路径是本机路径,而不是虚拟机上的路径。所以无法找到视图文件。

    修改方案:ssh 到虚拟机内部运行该命令。

    0x05 实践技巧

    坑也踩了,测试也做过了。这里针对这次经历做个实践技巧的简单总结。

    1. 有效的 Laravel 应用程序优化技巧

    1. 关闭应用debug app.debug=false

    2. 缓存配置信息 php artisan config:cache

    3. 缓存路由信息 php artisan router:cache

      🎜通常のアクセスを確認するには、ブラウザで Laravel アプリケーションのようこそページにアクセスしてください。 🎜🎜🎜🎜ab -t 10 -c 10 http://myurl.com/index.php を実行します。 🎜🎜🎜6.2 データレコード🎜🎜🎜Laravelフレームワークのパフォーマンスチューニング方法🎜🎜🎜6.3 比較結果🎜 🎜ステップ 5 の結果と比較すると、クラス マッピングの読み込みの最適化後、1 秒あたりに処理されるリクエストの数が 90 から 110 に増加し、リクエストの応答時間が 110 ミリ秒から 100 ミリ秒未満に低下したことがわかります。🎜その効果はかなりのものです。明らか。 🎜🎜🎜7. OPcacheを閉じる🎜🎜7.1 操作🎜🎜🎜🎜ステップ6に基づいて、PHPのOPcacheを閉じてサーバーを再起動します。 phpinfo() の Zend OPcache を介して OPcache が閉じられていることを確認します。 🎜🎜🎜🎜通常のアクセスを確認するには、ブラウザで Laravel アプリケーションのようこそページにアクセスしてください。 🎜🎜🎜🎜ab -t 10 -c 10 http://myurl.com/index.php を実行します。 🎜🎜🎜🎜7.2 データレコード🎜🎜🎜Laravelフレームワークのパフォーマンスチューニング方法🎜🎜🎜7.3 比較結果🎜 🎜 ステップ 6 の結果と比較すると、OPcache をオフにした後、1 秒あたりに処理されるリクエストの数が 110 から 15 に減少し、リクエストの応答時間が 100 ミリ秒未満から 650 ミリ秒以上に増加したことがわかります。 🎜OPcacheを開いたり閉じたりすると、データの違いは数倍になります。 🎜🎜🎜🎜その後、PHPのOPcacheを再度開くと、データは手順6のレベルに復元されました。 🎜🎜

      0x04 の落とし穴

      🎜1. [LogicException] シリアル化用のルート [/] を準備できません。 。 🎜🎜原因: ルーティングファイル内の「/」を処理するときにクロージャが使用されます。このコマンドを実行するには、ルーティング実装でクロージャを使用してはなりません。 🎜🎜修正計画: ルーティングの特定の実装をコントローラーに組み込みます。 🎜🎜2. [例外] 「Closure」のシリアル化は許可されていません。🎜🎜このエラーは、phpArtisanroute:cache コマンドを実行すると報告されます。 🎜🎜 原因: ルーティング ファイルに重複したルートが定義されています。 🎜🎜変更計画: ルーティング ファイル内の重複ルートを確認し、それらを変更します。特に、resource メソッドはメソッドの重複を引き起こす可能性があることに注意してください。 🎜🎜3. [RuntimeException] 指定されたファイル名が無効です。🎜🎜このエラーは、phpArtisan optimize --force 命名を実行すると発生します。 🎜🎜 原因: コンパイルが必要なクラスをロードするときに、対応するファイルが見つかりませんでした。コンパイルされるファイルパスは、5.2 バージョンの vendor/laravel/framework/src/Illuminate/Foundation/Console/Optimize/config.php で定義されていますが、なぜ なのかわかりません。 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/ActiveRecords.php が見つからなかったため、このエラーが報告されました。 🎜🎜修正計画: 上記の config.php の ../ActiveRecords.php 行を一時的にコメントアウトします。 🎜🎜4. FileViewFinder.php 行 137 の InvalidArgumentException: ビュー [ようこそ] が見つかりません🎜🎜 phpArtisan config:cache を実行した後、ブラウザで Laravel アプリケーションのようこそページにアクセスすると、このエラーが報告されます。 。 🎜🎜理由: Laravel アプリケーションサーバーは、Homestead を使用して仮想マシン上に構築されています。このコマンドを仮想マシンの外部で実行したため、生成された config.php 内のパスが仮想マシン上のパスではなくローカル パスになりました。したがって、ビューファイルが見つかりません。 🎜🎜変更計画: 仮想マシンに SSH で接続し、このコマンドを実行します。 🎜

      0x05 実践スキル

      🎜 落とし穴は克服され、テストは完了しました。この経験に基づいた実践的なスキルを簡単にまとめます。 🎜🎜1. Laravel アプリケーションの効果的な最適化のヒント🎜
        🎜🎜アプリケーションのデバッグ app.debug=false をオフにする🎜🎜🎜🎜 キャッシュ構成情報 phpArtisan config:cache🎜🎜🎜🎜キャッシュルーティング情報phpArtisan router:cache🎜
    4. クラスマップ読み込みの最適化 phpArtisanoptimize (自動読み込み最適化 composer dumpautoload を含む) php artisan optimize(包含自动加载优化 composer dumpautoload

    5. 根据需要只加载必要的中间件

    6. 使用即时编译器(JIT),如:HHVM、OPcache

    2. 编写代码时注意事项

    1. 路由的具体实现放到控制器中。

    2. 不定义重复的路由,尤其注意 resouce

    3. 必要なミドルウェアのみを必要に応じて読み込みます

    インスタントコンパイラーを使用します( JIT)、例: HHVM、OPcache

    2. コードを記述する際の注意事項

    ルーティングの特定の実装はコントローラーに配置されます。
    1. 重複したルートを定義しないでください。resource メソッドに特に注意してください。
    2. 各ミドルウェアの役割を明確にし、不要なミドルウェア参照を削除します。
    3. 0x06 次のステップ
    4. 上記のチューニングのヒントとコーディングに関する考慮事項は、主にフレームワーク自体に関するものであり、実際のビジネス ロジックのコーディングには多くの特定の最適化テクニックがありますが、ここでは説明しません。

      次の最適化では、特定のコーディングの実践に焦点を当てます:
    5. Memcached を使用してセッション config/session.php を保存する

    専門的なキャッシュ ドライバーを使用する

    データベース リクエストの最適化


    データ セットの書き込みとキャッシュロジック🎜🎜🎜🎜Elixirとマージされたフロントエンドリソース🎜🎜🎜🎜0x07 最後に書きました🎜🎜 私はインターネット上でフレームワークのパフォーマンス比較に関する多くの記事や議論を見てきました、また、データの単純な投稿も多く見てきました。これだけでは実態を把握するには不十分であるため、この実践を実施し、その過程を詳細に記録しました。読者が実践する際の参考、比較、考察を提供します。この実践について質問がある読者も、質問やコメントを送信していただけます。 🎜🎜🎜🎜🎜🎜🎜

    以上がLaravelフレームワークのパフォーマンスチューニング方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。