ホームページ  >  記事  >  バックエンド開発  >  PHP では、テンプレート トラバーサルを通じてデータベースを読み取るのと、ファイルから HTML を読み取るのではどちらの方が高速ですか?

PHP では、テンプレート トラバーサルを通じてデータベースを読み取るのと、ファイルから HTML を読み取るのではどちらの方が高速ですか?

WBOY
WBOYオリジナル
2016-09-28 08:54:091222ブラウズ

私は以前ショッピングモールのウェブサイトに取り組んでいたのですが、そのモジュールの 1 つがホームページをカスタマイズすることでした。ホームページが読み込まれると、そのページの HTML コンテンツを簡単に抽出してファイルに書き込みました。そしてそれをテンプレートに出力します。質問内のデータベースの読み取りとは、HTML コンテンツではなく、カスタマイズされたデータを読み取ることを指します。

今は急いでいません、知りたいのは:

  1. 同時にアクセスする人が多い場合、ファイルの読み込みは速いですか?それともデータベースからデータを読み取る方が速いですか?

  2. ファイルに書き込まれるコンテンツが多く、ファイルが比較的大きい場合、読み取り時間は遅くなりますか?

  3. 私が使用している TP フレームワークでは、 をテンプレートに直接含めた方が良いでしょうか

  4. もう一度質問しますが、同時実行性はどのようにテストしますか?どのようなキーワードで検索すればよいでしょうか?

追伸: 私は働き始めたばかりなので、アドバイスをお願いします

返信内容:

私は以前ショッピングモールのウェブサイトに取り組んでいたのですが、そのモジュールの 1 つがホームページをカスタマイズすることでした。ホームページが読み込まれると、そのページの HTML コンテンツを簡単に抽出してファイルに書き込みました。そしてそれをテンプレートに出力します。質問内のデータベースの読み取りとは、HTML コンテンツではなく、カスタマイズされたデータを読み取ることを指します。

今は急いでいません、知りたいのは:

  1. 同時にアクセスする人が多い場合、ファイルの読み込みは速いですか?それともデータベースからデータを読み取る方が速いですか?

  2. ファイルに書き込まれるコンテンツが多く、ファイルが比較的大きい場合、読み取り時間は遅くなりますか?

  3. 私が使用している TP フレームワークでは、 をテンプレートに直接含めた方が良いでしょうか

  4. もう一度質問しますが、同時実行性はどのようにテストしますか?どのようなキーワードで検索すればよいでしょうか?

追伸: 私は働き始めたばかりなので、アドバイスをお願いします

  1. データベースのメモリキャッシュに関係なく、データベース内のデータはファイルにも保存されます。データベースはクエリプロセスやその他の処理プロセスも通過する必要があるため、データベースを読み取るよりもファイルを読み取るだけの方が当然高速です。ただし、ファイルが多すぎる場合は、ファイル システムのクエリ速度も考慮する必要があります。この速度は、ファイルが多すぎる場合のデータベース クエリよりも遅くなります。

  2. ファイルの読み取り時間は当然ファイルのサイズに依存しますが、ファイル内のすべての内容が必要なものである場合、この時間は当然不可欠です。ファイルの一部だけを読みたい場合は、シークによってファイル ポインタを移動できます。

  3. TP フレームワークのテンプレートはコンパイルされます。つまり、作成したテンプレート ファイルは実際の実行時には使用されませんが、コンパイルされたテンプレートが使用されるため、パフォーマンスの問題を心配することなく安全に include を使用できます。

  4. 正確に言うと、同時実行テストはストレス テストと呼ばれるべきです。ストレス テスト プランを検索してください。

ご質問へのお答えです

  1. 同時実行性が高い場合、直接データベースは間違いなく非常に遅くなります。少なくとも、データベースにキャッシュ層が存在します。

    リーリー

    あなたのニーズを見ると、静的ファイルを生成する手順があるようです。以下にいくつかのキーワードがあります:

    • ob_start

    • 伪静态

    • CDN

  2. 書き込むファイルの内容が大量にある場合は、通常、単に書き込むのではなく、キャッシュなどを使用して全体的なアーキテクチャのソリューションを作成します

    読み取られるファイル (特に PHP ファイル) が比較的大きい場合は、OpCache をオンにして速度を上げることを検討してください

  3. PHP によって実行されるテンプレート ファイルが組み込まれています include,效率等同PHP的include
    如果访问的页面全部静态文件,需要嵌入子模板的情况,SSI(ApachenginX)会比PHP的includeはるかに高速です

    それでは、あなたの質問に対する答えは次のとおりです: HTML が最も速く、PHP を実行する必要はありませんが、事前に生成する必要があります

  4. 同時実行テスト、キーワードから始めます apache benchmark そうすれば、必要なコンテンツがたくさん見つかります。

まず、ファイルの速度に大きな違いはありませんが、すべてデータベースに配置された方が管理が容易です。

第二に、これらの CMS タイプの Web サイトは静的化によって最適化でき、ページの生成時間とは関係ありません。

まず第一に、メモリ > ファイルです
次に、データベースはファイルにもデータを保存します (もちろん、データベースにはクエリ キャッシュがあります)
非リレーショナル データは、もちろんファイルを保存する方が高速です
しかし、大規模なデータを保存することはできません同じフォルダー内の量 ファイル (アドレス指定が遅い) は、次のようなファイル名ディレクトリを使用して分割できます。
ファイル名 dsaferdfsasxfsfsdf.dat
最初の 2 文字を使用して第 1 レベルのディレクトリを作成し、
ds/dsaferdfsasxfsfsdf として保存します。 dat
lokljljoiomlkml.dat >> lo/lokljljoiomlkml.dat

TP には単純なキャッシュ メソッド S() が付属しており、デフォルトではファイル ドライバーが使用されます。キャッシュ ドライバーが Memcahced または Redis を使用する場合、Memached または Redis サーバーがこのマシン上にあることが前提となります。またはギガビット以上の LAN 内にあります。

同時テストの場合、Linux および Darwin の ab コマンド (ApacheBench) を使用できます (OS リクエスト、各同時実行数は 100 (この値には上限があり、システム設定に応じて、一般的なデフォルトは 256 です)

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