主流の PHP フレームワークのパフォーマンスに関する非権威テスト
PHP 開発者およびスタートアップ チームの技術開発者として、開発フレームワークを選択することは非常に難しいことです。
ThinkPHP を使用する場合は、訓練機関を卒業したばかりの開発者を採用することから始めることができますが、パフォーマンスとポストコードを切り離すのは頭の痛い問題です。ただし、多くの専門家がすでに道を切り開いているため、サードパーティ関数の多くは自分で記述する必要はありません。
を使うと非常に書きやすく拡張性も十分だと言われていますが、学習コストが少し高いです。フレームワークを学ぶ月。そして、Laravel
のパフォーマンスがあまり良くなく、ドキュメントも特に充実していないことが世界中の人々によって明らかになったと言われています。
を使用する場合、構文が少し面倒で、フロントエンドとバックエンドのコードを分離するのが少し面倒ですが、パフォーマンスは非常に優れており、すでに多くの国内大手企業で導入されており、事故が発生した場合でもすぐにダニエルを見つけて質問に答えることができます。 簡単な性能評価をした方が良いです。性能の良いものを選べば間違いありません
性能テスト
- テスト時間: 2016 年 5 月 06 日
- テストツール:
- siege
(MAC システムの
ab
が常に表示されるためpr_socket_recv: ピアによる接続リセット ( 54 )
エラーのため、siege
) テストマシン: MacPro Core i5 プロセッサ/8GB メモリ/256GB SSD フラッシュ メモリ - フレームワークバージョン:
- ThinkPHP 3.2.3
Laravel 5.2
Yii2 .0.5
テスト原則: 各テスト サイクルは 5 回で、中程度のデータを取得します - 補足説明: すべてのプロジェクトは次のとおりです。サブディレクトリのテスト
結果の説明
Transactions: 2119 hits 处理请求总数量 Availability: 96.85 % 可用性 Elapsed time: 9.74 secs 运行时间 Data transferred: 1.31 MB 数据传输量 Response time: 0.60 secs 响应时间 Transaction rate: 217.56 trans/sec 每秒处理效率 Throughput: 0.13 MB/sec 每秒处理数据 Concurrency: 130.28 并发 Successful transactions: 2162 成功的请求 Failed transactions: 69 失败的请求 Longest transaction: 2.85 最长的单个请求 Shortest transaction: 0.01 最短的单个请求
#コントローラーを追加し、コントローラーに HelloWorld を 10,000 回入力します
同時実行性50 ループを 10 回:
最初に思いついたのは ThinkPHP で、見た目は問題ありませんでしたTransactions: 500 hits Availability: 100.00 % Elapsed time: 2.81 secs Data transferred: 52.45 MB Response time: 0.26 secs Transaction rate: 177.94 trans/sec Throughput: 18.67 MB/sec Concurrency: 47.10 Successful transactions: 500 Failed transactions: 0 Longest transaction: 0.48 Shortest transaction: 0.03
Transactions: 500 hits Availability: 100.00 % Elapsed time: 13.33 secs Data transferred: 52.45 MB Response time: 1.27 secs Transaction rate: 37.51 trans/sec Throughput: 3.93 MB/sec Concurrency: 47.55 Successful transactions: 500 Failed transactions: 0 Longest transaction: 3.64 Shortest transaction: 0.07
Transactions: 500 hits Availability: 100.00 % Elapsed time: 4.84 secs Data transferred: 52.45 MB Response time: 0.46 secs Transaction rate: 103.31 trans/sec Throughput: 10.84 MB/sec Concurrency: 47.65 Successful transactions: 500 Failed transactions: 0 Longest transaction: 0.88 Shortest transaction: 0.04
Transactions: 1977 hits Availability: 98.85 % Elapsed time: 10.03 secs Data transferred: 207.40 MB Response time: 0.95 secs Transaction rate: 197.11 trans/sec Throughput: 20.68 MB/sec Concurrency: 187.68 Successful transactions: 1977 Failed transactions: 23 Longest transaction: 1.22 Shortest transaction: 0.02
Transactions: 1890 hits Availability: 94.50 % Elapsed time: 51.85 secs Data transferred: 198.27 MB Response time: 4.88 secs Transaction rate: 36.45 trans/sec Throughput: 3.82 MB/sec Concurrency: 178.00 Successful transactions: 1890 Failed transactions: 110 Longest transaction: 26.01 Shortest transaction: 0.07
Transactions: 1996 hits Availability: 99.80 % Elapsed time: 18.95 secs Data transferred: 209.39 MB Response time: 1.79 secs Transaction rate: 105.33 trans/sec Throughput: 11.05 MB/sec Concurrency: 188.57 Successful transactions: 1996 Failed transactions: 4 Longest transaction: 3.29 Shortest transaction: 0.10
最適化を行わないと、ThinkPHP が最も速く、Yii がわずかに速く、Laravel はふらふらしながらテストを終了するとは予想していませんでした。結果は少々予想外ですが、上記のテストは開発環境のみを表しており、以下ではオンライン環境をシミュレートするためにフレームワークを最適化します。
最適化フレームワーク
ThinkPHP:
APP_DEBUG改为false
Laravel:
APP_DEBUG改为false php artisan route:cache php artisan optimize php artisan config:cache composer dumpautoload -o
Yii:
YII_DEBUG改为false composer dumpautoload -o
同時実行 200 ループ 10 回:
ThinkPHP
Transactions: 1655 hits Availability: 82.75 % Elapsed time: 8.21 secs Data transferred: 173.62 MB Response time: 0.69 secs Transaction rate: 201.58 trans/sec Throughput: 21.15 MB/sec Concurrency: 139.29 Successful transactions: 1655 Failed transactions: 345 Longest transaction: 7.83 Shortest transaction: 0.00
Laravel:
Transactions: 1520 hits Availability: 76.00 % Elapsed time: 34.95 secs Data transferred: 159.45 MB Response time: 3.15 secs Transaction rate: 43.49 trans/sec Throughput: 4.56 MB/sec Concurrency: 136.84 Successful transactions: 1520 Failed transactions: 480 Longest transaction: 19.18 Shortest transaction: 0.00
Yii:
Transactions: 1704 hits Availability: 85.20 % Elapsed time: 15.16 secs Data transferred: 178.76 MB Response time: 1.46 secs Transaction rate: 112.40 trans/sec Throughput: 11.79 MB/sec Concurrency: 164.21 Successful transactions: 1704 Failed transactions: 296 Longest transaction: 9.04 Shortest transaction: 0.00
奇妙なことに、フレームワークがデバッグ モードをオフにすると、より多くの失敗が発生します。ただし、単純な最適化の後、Laravel のパフォーマンスは大幅に向上していることは明らかですが、それでも他の 2 つのフレームワークよりも低いです。
結論
テスト中、私は落ち込んでしまい、自分の世界観が崩壊してしまい、崩壊寸前まで落ち込んでしまったように感じました。
ThinkPHP のパフォーマンスは Yii の 2 倍、Laravel のほぼ 4 倍です
Yii のパフォーマンスは比較的平凡ですが、テストでは Zhonghui他の 2 つのフレームワークよりもリクエストの失敗が少ないことが明らかにわかりました
-
Laravel は依然としてエレガントですが、そのパフォーマンスは心配です。ネチズンの言葉で説明する方が適切です
学ぶ人はそれを使います 死ぬ人 最後に
私のプロジェクトは、自作フレームワークを使用して開発されました。コンポーザーの力のおかげで、開発プロセスは非常にスムーズに進みました。最終的には、独自のフレームワークの 200 同時実行と 10 サイクルのデータを添付します。フレームワークはオープンソースですが、更新が非常に忙しいです。github で PPPHP を検索して、私と一緒にフレームワークを構築することを歓迎します。 。