この記事は、Symfony Flexを使用した高性能マルチイメージギャラリーブログの構築に関するシリーズの一部です。 (こちらのリポジトリをご覧ください。)
前回の記事では、基本的なSymfonyプロジェクトを設定し、初期の備品を作成し、アプリケーションを実行しました。この記事では、パフォーマンスベンチマーク用のリアルなデータセットをデータベースに入力することに焦点を当てています。 また、phpunitテストスイートのセットアップについても取り上げます
主要な目的:
このアプローチは遅く、メモリエラーが発生しやすく、Fakerを使用した画像のダウンロードが繰り返されるため、非効率的です。 バッチ処理のための教義の最適化:
これらの問題に対処するために、ドクトリンにバッチ処理を実装します。バッチサイズ(100のギャラリーなど)を定義し、各バッチの後にエンティティマネージャーをフラッシュしてクリアし、ガベージコレクションを使用します()。 これにより、メモリの膨満感が防止されます。 また、メモリの使用状況を監視し、進行状況の更新を印刷します。 重要なことは、「エンティティなし」エラーを避けるために、エンティティをマネージャーに再マネージャーしてマネージャーに戻すことを忘れないでください。
最適化されたCOUNT
>フィクスチャの例:
// src/DataFixtures/ORM/LoadUsersData.php const COUNT = 500; // src/DataFixtures/ORM/LoadGalleriesData.php const COUNT = 1000;
PHP Fatal error: Allowed memory size of N bytes exhausted
画像を動的にダウンロードする代わりに、画像のセット(たとえば、15個から15個)を再使用して再利用します。 これにより、プロセスが大幅に高速化されます。 この事前に定義されたセットから選択するために
メソッドを更新できます。
gc_collect_cycles()
fixturesをリロードする前に、$manager->clear()
スクリプトのディレクトリをクリーニングするコマンドを追加することを忘れないでください。
包囲とdockerによるパフォーマンステスト:
Dockerコンテナ内の強力なHTTPベンチマークツールであるSiegeを使用して、一貫した再現性のあるパフォーマンステストを行います。 これにより、ローカルインストールの必要性が回避され、一貫したテスト環境が保証されます。
テストシナリオ:
テストシナリオを定義して、次のようなさまざまなユーザーインタラクションをシミュレートします。
lazy-load-urls.txt
シングルギャラリーページ:galleries.txt
結論:
この記事では、パフォーマンステストと堅牢なテストフレームワークを確立するための現実的なデータセットを作成するための詳細な手法。 将来の記事は、PHPとMySQLのパフォーマンスの最適化とさらなるパフォーマンスの改善を掘り下げます。 よくある質問(FAQ):(これらのFAQは元の入力とほぼ同じままですが、より具体的な質問が発生した場合、この特定のブログ投稿シリーズのコンテキストに基づいてさらに調整できます。 )
以上がSymfony Flexを使用した画像ギャラリーブログの構築:データテストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。