PHP框架性能测试报告_PHP
作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。
用ThinkPHP的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人头疼的事情。不过很多第三方功能不需要自己写,众多大牛已经给铺好路了。
用Laravel的话,传说写起来很爽扩展性也够,但是学习成本有点高,总不能给初级开发者半个月的时间去学习框架吧。而且据说江湖人士透漏,Laravel性能不怎么样,文档也并不是特别丰富。
用Yii的话,语法有点啰嗦,前后端代码分离有点小麻烦,不过性能是非常好的,而且已经有众多国内大公司在使用了,出现意外可以快速的找到大牛答疑解惑。
不如做个简单的性能评测,选个性能出色的总不会出错
性能测试
测试时间: 2016年05月06日
测试工具: siege (因为MAC系统的ab总是会出现 pr_socket_recv: Connection reset by peer (54) 的错误,所以选择了siege)
测试机器: MacPro Core i5 处理器/8GB内存/256GB SSD闪存
测试环境: Apache PHP5.6
框架版本: 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 最短的单个请求
开始测试
增加一个控制器,并在控制器中输入10000次HelloWorld
并发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
然后是Laravle,嗯,略微有些失望
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
最后赛前比较看好的Yii
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
并发200循环10次:
首先是ThinkPHP
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
然后是Laravel
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
最后是Yii
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进行简单的优化后,性能大大的提升了,但还是低于其他两个框架。
结论
在测试的过程中,其他我的心情是沮丧的,感觉自己的三观世界已经崩塌了,崩塌至渣。
ThinkPHP的性能比Yii高出一倍,比Laravel高出近四倍
Yii的性能比较中庸,但是在测试中会明显发现请求失败的情况比其他两个框架要少
Laravel依旧优雅,不过性能堪忧,用网友的话形容比较好 学之者生用之者死
最后
我的项目最后使用了自建框架进行开发,得益于composer的强大,开发的过程非常顺利,最后附上自有框架在200并发10次循环的数据,框架开源但是更新比较忙,欢迎在github上搜索PPPHP,和我一起搭建框架。
Transactions: 1672 hits Availability: 83.60 % Elapsed time: 6.18 secs Data transferred: 175.40 MB Response time: 0.57 secs Transaction rate: 270.55 trans/sec Throughput: 28.38 MB/sec Concurrency: 153.16 Successful transactions: 1672 Failed transactions: 328 Longest transaction: 4.57 Shortest transaction: 0.01

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

開発環境が異なると、PHP フレームワークのパフォーマンスに違いがあります。開発環境 (ローカル Apache サーバーなど) は、ローカル サーバーのパフォーマンスの低下やデバッグ ツールなどの要因により、フレームワークのパフォーマンスの低下に悩まされます。対照的に、より強力なサーバーと最適化された構成を備えた実稼働環境 (完全に機能する実稼働サーバーなど) では、フレームワークのパフォーマンスが大幅に向上します。

PHP フレームワークの選択は、プロジェクトのニーズと開発者のスキルによって異なります。 Laravel: 豊富な機能と活発なコミュニティがありますが、学習曲線が急で、パフォーマンスのオーバーヘッドが高くなります。 CodeIgniter: 軽量で拡張が簡単ですが、機能が制限されており、ドキュメントが少なくなります。 Symfony: モジュール式の強力なコミュニティですが、複雑なパフォーマンスの問題があります。 ZendFramework: エンタープライズ グレードで、安定性と信頼性が高くなりますが、ライセンスが大きく高価です。スリム: マイクロフレームワークで高速ですが、機能が限られており、学習曲線が急です。

PHP フレームワークとマイクロサービスを組み合わせる利点: スケーラビリティ: アプリケーションを簡単に拡張し、新しい機能を追加したり、より多くの負荷を処理したりできます。柔軟性: マイクロサービスは独立してデプロイおよび保守されるため、変更や更新が容易になります。高可用性: 1 つのマイクロサービスの障害が他の部分に影響を与えないため、高可用性が確保されます。実践的なケース: Laravel と Kubernetes を使用したマイクロサービスのデプロイ ステップ: Laravel プロジェクトを作成します。マイクロサービスコントローラーを定義します。 Dockerfileを作成します。 Kubernetes マニフェストを作成します。マイクロサービスをデプロイします。マイクロサービスをテストします。

PHP フレームワークと DevOps を統合すると、効率と機敏性が向上します。退屈なタスクを自動化し、人員を解放して戦略的タスクに集中させ、リリース サイクルを短縮し、市場投入までの時間を短縮し、コード品質を向上させ、エラーを削減し、部門間のチームのコラボレーションを強化し、ブレークダウンを実現します。開発と運用のサイロ化

PHP フレームワークを使用して人工知能 (AI) を統合し、Web アプリケーションへの AI の統合を簡素化します。 推奨フレームワーク: Laravel: 軽量、効率的、強力です。 CodeIgniter: シンプルで使いやすく、小規模なアプリケーションに適しています。 ZendFramework: 完全な機能を備えたエンタープライズ レベルのフレームワーク。 AI 統合方法: 機械学習モデル: 特定のタスクを実行します。 AIAPI: 事前構築された機能を提供します。 AI ライブラリ: AI タスクを処理します。

最優秀 PHP マイクロサービス フレームワーク: Symfony: 柔軟性、パフォーマンス、スケーラビリティを備え、マイクロサービスを構築するためのコンポーネント スイートを提供します。 Laravel: 効率とテスト容易性に重点を置き、クリーンな API インターフェイスを提供し、ステートレス サービスをサポートします。スリム: ミニマリストで高速、シンプルなルーティング システムとオプションのミッドボディ ビルダーを提供し、高性能 API の構築に適しています。

PHP フレームワークにおける人工知能 (AI) の応用可能性には、以下が含まれます。 自然言語処理 (NLP): テキストの分析、感情の特定、要約の生成。画像処理: 画像オブジェクトの識別、顔検出、サイズ変更に使用されます。機械学習: 予測、分類、クラスタリング用。実際のケース: チャットボット、パーソナライズされた推奨事項、不正行為の検出。 AI を統合すると、Web サイトやアプリケーションの機能が強化され、強力な新機能が提供されます。

さまざまな PHP フレームワークのパフォーマンスは、アプリケーションの選択に大きく影響します。 ベンチマーク テストでは、Slim、Laravel、Symfony、および CodeIgniter のパフォーマンスが次のように示されています。 スリム: 最速の処理速度を備えた軽量設計 Laravel: 複雑なクエリを処理する大規模なアプリケーションに適しています。 : エンタープライズ レベルのフレームワーク、複雑なビジネス ロジックの処理における優れたパフォーマンス CodeIgniter: 軽量のフレームワーク、小規模アプリケーションに適しています 最適なフレームワークを選択するには、アプリケーション サイズ、処理能力、コードの複雑さ、スケーラビリティなどの要素を考慮する必要があります。 -コマース Web サイトには Laravel のような高性能フレームワークが必要になる場合がありますが、小規模なブログには Slim の方が適している場合があります。
