ホームページ > バックエンド開発 > PHPチュートリアル > Yii を使用しているのに同じプロジェクトにアクセスすると、速いときと非常に遅いときがあるのはなぜですか?

Yii を使用しているのに同じプロジェクトにアクセスすると、速いときと非常に遅いときがあるのはなぜですか?

WBOY
リリース: 2016-06-23 14:18:54
オリジナル
1344 人が閲覧しました

この投稿は acc972 によって最終編集されました: 2013-08-07 11:28:24

Yii PHP

http://host/module/controller/ action
、js、img、css などのプロジェクトにアクセスするとき. は 0.2 秒以内にロードできますが、ビュー ファイル html は 0.2 秒以内にロードできる場合もあれば、ロードに 2 秒以上、さらには 30 秒かかる場合もあります。これは、このアドレスに初めてアクセスしたとき、またはこのコントローラの下にある別のビュー (http://host/module/controller/anotheraction など) にアクセスしてアクション アドレスに再度アクセスしたときに発生します。この状況は、アドレスだけではありません。アクション内に存在するは、別のアクション内で発生する可能性があります。これが私のコードの理由ですか?私はデータプロバイダーとして CDbCriteria を使用しています

ディスカッションへの返信 (解決策)

最初のアクセスは遅く、2 回目のアクセスは速いのですが、通常、この状況は 2 回目にキャッシュが直接読み取られるためです

したがって、次のようにする必要があります。遅い理由に注目してください (初回)

使用されている SQL ステートメントが多すぎるかどうか

最初のアクセスが遅く、2 回目のアクセスが速い場合、通常、この状況は 2 回目のアクセスが直接行われるためです。キャッシュ

したがって、なぜ遅いのか (1 回目) に焦点を当てる必要があります

あまりにも優れた SQL ステートメントが使用されているかどうかに焦点を当てる必要があります
キャッシュは使用されません。ここでは「1 回目」と「2 回目」を示します。 " 「時間」は実際には単なる形式的な意味であり、「断続的な」アクセスが遅いと理解してください

それなら考えを変えてください

たとえば、十分なコンテンツがあるページにアクセスすると、PHP は計算を実行せず、フロント ページ123 しかなく、場合によっては非常に遅くなります

そうでない場合は、分析のためにキーコードを送信してください

これも遅い場合は、他のアイデアを検討してください

データベースへのアクセスが速い場合と遅い場合は、特にスタンドアロンのテスト環境では正常です

オペレーティング システムは、アイドル状態のサービスを一時停止します (または、サービスが占有しているメモリを解放するためにハードディスクに移動します)
アクセスすると、mysql がハードディスクに移動されます。当然、公式に運営されている Web サイトでは常にアクセスする人がいるから、ハードディスクから読み込んで復元するのに少し時間がかかります。それは決して一時停止されません。したがって、その効果は満足のいくものになります

特にスタンドアロンのテスト環境では、データベースへのアクセスが速く、時には遅くなるのが通常です


オペレーティング システムは、アイドル状態のサービスを一時停止します (または、サービスをハードディスクに移動し、メモリを解放します)占有します)
アクセスを開始するときに、mysql がハードディスクに移動されている場合、ハードディスクから読み取ってシーンを復元する作業が発生します。当然、もう少し時間がかかります
正式に運用されているウェブサイトには常に誰かがアクセスしているため、一時停止されることはありません。したがって、効果は満足のいくものになります

悲しいことに、この状況は正式な運用中に発生するということであり、これは非常に深刻です。コードもチェック済みで大きな問題はありません。
このプロジェクトは一定の適時性があるため、データベースは外部ネットワーク上のメインデータベースを使用し、読み書きにはメインデータベースを使用しますが、このプロジェクトを使用している人は少なく、操作は特に頻繁ではありません。他のプロジェクトもデータベースに頻繁にアクセスしますが、それらはすべて読み取りと書き込みを分離しています。
奇妙なのは、たとえば、このプロジェクトの下に「カテゴリ管理」メニューがあり、そのリンクが分類されたデータを表示するビュー ページを指していることです。分類テーブルには 5 つのフィールドと 10 のレコードしかありません。表示は非常に混乱するはずです。ただし、このページを開くのに数秒、場合によっては数分かかる場合もあります。
スロークエリログも確認しましたが、このような SQL ステートメントのクエリ時間は最大 15 秒かかります。" UPDATE 履歴 SET status='1313', time=1373254836,t_id='34' WHERE id ='817 ';"、 解決する。 。

更新が多いですか?


テーブルがロックされているため、非常に遅い可能性がありますか?

更新が多いですか?


テーブルがロックされているため、非常に遅い可能性がありますか?

今日 CWebLogRoute を開いてプログラムを確認してください


の実装に関する新しい手がかりがあります。理由はまだ解明されていませんが、スクリーンショットをアップロードしました。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート