36

PHP の各関数と PHP の各ファイルの実行にかかる時間を特定する方法を見つけたいと思います。「ラフスポット」を見つけようとしている古いレガシーPHPアプリケーションを持っているので、どのルーチンとページのロードに非常に長い時間がかかっているかを客観的に特定したいと思います。

これを可能にする既製のツールはありますか?それとも、マイクロタイムを使用して独自のプロファイリング フレームワークを構築しているのですか?

4

9 に答える 9

43

私は実際に先週いくつかの最適化作業を行いました。XDebugは確かに進むべき道です。

拡張機能として有効にし(何らかの理由で、Windowsマシンのze_extensionでは機能しません)、xdebug.profiler_enable_trigger = Onを使用してphp.iniをセットアップし、getまたはpostとしてXDEBUG_PROFILE=1を使用して通常のURLを呼び出します。その要求をプロファイリングするための変数。これ以上簡単なことはありません!

また、デバッグ出力ファイルを読み取って解析できるWebベース(php)のgoogle Summer Of Codeプロジェクトであるwebgrindを本当にお勧めします!

于 2008-09-25T16:16:15.893 に答える
8

ここに良いヒントがあります。

XDebugを使用してPHPのプロファイリングを行う場合は、profiler_triggerを設定し、これをブックマークレットで使用してXDebugプロファイラーをトリガーします;)

javascript:if(document.URL.indexOf('XDEBUG_PROFILE')<1){var%20sep=document.URL.indexOf('?');sep%20=%20(sep<1)?'?':'&';window.location.href=document.URL+sep+'XDEBUG_PROFILE';}
于 2010-07-28T18:18:36.960 に答える
6

詳細なプロファイリングを可能にするxdebugを調べてください。そして、ここでxdebug の使い方を説明します。

Xdebug の Profiler は、PHP コードを分析してボトルネックを特定したり、一般的にコードのどの部分が遅く、速度を上げることができるかを確認したりできる強力なツールです。Xdebug 2 のプロファイラーは、プロファイリング情報を cachegrind 互換ファイルの形式で出力します。

Webgrindについて言及してくれた SchizoDuckie に敬意を表します。これは私がそれについて聞いたのは初めてです。非常に便利です (+1)。

それ以外の場合は、 Linux でkcachegrindを使用するか、その下位の派生物であるwincachegrindを使用できます。これらのアプリはどちらも、xdebug のプロファイラー出力ファイルを読み取り、それらを要約して表示します。

于 2008-09-25T14:30:04.727 に答える
3

XDebug は便利ですが、IMO の使用やセットアップは簡単ではありません。

Zend Studio に組み込まれているプロファイラーは、非常に使いやすいものです。ブラウザーのツールバーでボタンを押すだけで、コード プロファイルをBAMで取得できます。ts はおそらく CacheGrind ダンプほど詳細ではありませんが、常に私にとっては十分でした。

Zend Platform もセットアップする必要がありますが、それは簡単で、開発用には無料です。ただし、Zend Studio ライセンスの料金を支払う必要があります。

于 2008-09-25T15:20:47.710 に答える
3

Zend Coreのスクリーンキャストを見たことがあります。かなり良さそうに見えますが、実際にはお金がかかります。それが問題になるかどうかはわかりません。

于 2008-09-25T14:30:39.140 に答える
2

非常に強力なリアルタイムデバッグ機能に加えて、NuSphere(www.nusphere.com)のPhpEDには、IDE内からシングルクリックで実行できるプロファイラーが組み込まれています。

于 2008-10-15T22:02:48.700 に答える
2

xdebug 拡張機能をインストールすると、WinCacheGrind (Windows の場合) で読み取ることができる実行プロファイルをエクスポートするように設定できます。Linux でファイルを読み取るアプリの名前が思い出せません。

于 2008-09-25T14:30:38.550 に答える
2

xdebug のプロファイリング機能は非常に優れています。出力を valgrind 形式で保存するように取得した場合は、KCachegrind や Wincachegrind などを使用してコール グラフを表示できます。視覚的なタイプの人であれば、何が起こっているかをより簡単に理解できます。

于 2008-09-25T14:34:02.737 に答える
0

最も簡単な解決策は、Zend Profilerを使用することです。使用するのに、Zend Platformは必要ありません。ブラウザーから直接実行でき、非常に正確で、必要な機能が最も多く、ZendStudioに統合されています。

于 2008-09-25T22:07:06.283 に答える