2012-04-21 7 views
1

ローカルフードバンクの管理アプリケーションでは、MySQLデータベースから毎月のレポート統計を生成するPHPスクリプトを作成しました。不確実な時間にスクリプトが実行されていない場合は、実行に数秒かかることがあります。一度実行すると、その後のスクリプトの実行には数分の1秒かかります。私は、どのような要因が長い最初の実行を引き起こし、私はそれらの任意のコントロールを持っているかどうかを把握しようとしています。その行動は私の開発システムとフードバンクのホストの間で匹敵しますので、単なるローカル現象ではありません。スクリプト処理時間の最初の実行

私は "フラッシュテーブル"と "リセットクエリキャッシュ"を試しましたが、私は長期的には再現できません。また、MySQLサーバをシャットダウンして再起動することもなく(開発システムでのみ可能)、実行時間が長くなります。

他にはどこが見えますか?

ありがとうございました。

+0

私たちはもっと仕事をする必要があります。私たちができるのはランダムな推測です。 – Jasper

+1

OSファイルシステムのキャッシュと仮想メモリシステムも考慮する必要があります。 PHPファイルは最初にディスクから読み込まれますが、その後の実行ではファイルシステムのキャッシュから読み込まれます。 PHPエンジンもメモリに読み込まれ、ディスクから読み込まれる代わりにそこから呼び出されます。 – GordonM

+0

ディスクアクセスがcliの要因になる可能性があります。これは、PHPが初期とその後の時間を取得するために使用されるリモートホストでの動作を説明することはできません。 – geoB

答えて

1

このような状況での私の最初のコール・ポートは、何が時間がかかっているかを見るためにスクリプトをプロファイルすることです。あなたは、問題をローカルに再現できると言います。その場合、プロファイラを入手してください(xDebugZend Debuggerは両方のスクリプトをプロファイルすることができますが、他のスクリプトもあります)、スクリプトのプロファイルを作成して時間の経過を確認します。

+0

興味深い概念ですが、xDebugが最初の処理時間にどのように集中するのかについてはっきりしていません。私はこれを読むことができる任意の参照? – geoB

+0

@geoB xDebugへのリンクを参照してください。プロファイリングを起動して実行する方法について説明します。その出力は、最も多くの時間を消費していることを示し、改善方法を調べるのに役立ちます。 – liquorvicar

+0

Doh!やってる。私は何かを学ぶ前に数日かかるだろうと思っています。所見を報告する。 Thnx。 g – geoB

関連する問題