2

アプリケーション[modx]の問題を追跡しようとしています。サーバー上にこれらのサイト[約10]がいくつかあり、phpが何をしているのかをどうやって確認できるのか疑問に思っていました。

これらのサイトのページは非常に低速ですが、dev内の同じサイトは、サーバー上の他のphpアプリケーションと同様に問題ありません。

xdebugを使用して、これらのページの処理中にphpが何をしていたか、ボトルネックがどこで発生していたかを把握しようとしましたが、エラーに対して何もしたくないようでした[エラーはスローされません]

これを追跡する方法について何か提案はありますか?[linux / Centos5 / php5.2。?/ apache2]

4

3 に答える 3

2

Xdebugとwebgrindは、ボッテルネックがどこにあるかを確認するための優れた方法です...

XDEBUG_PROFILEWebgrindを読む

実行のたびにxdebugがコードをプロファイルするようにphp.iniを設定するか、特別なパラメータが渡された場合は、xdebugがプロファイルダンプを書き込む同じディレクトリから読み取るようにwebgrindを設定します。

Webgrindは、どの関数と関数のセットが最も時間を必要とするかを示し、それを分解して、遅いコードや非効率的なコードを簡単に見つけられるようにします。(たとえば、スクリプトが高速クエリで「PDOStatement-> execute」を300回呼び出している[または、1回呼び出して非常に遅いクエリを実行している]と、実行時間の90%を占めます)。

于 2012-04-17T18:31:03.943 に答える
2

PHPのボトルネックを見つけるために最も一般的に使用されるツールは、Xdebugです。ただし、コードベースも手動で調べる必要があります。

あなたが焦点を合わせなければならない3つの異なる領域があります:

  • フロントエンドのパフォーマンス
  • SQLクエリ
  • phpロジック自体

..そして知覚速度への影響はこの順序です。

ySlowを実行することから始め、サイトがガイドラインにできるだけ準拠していることを確認する必要があります。

次のステップは、実行されるSQLクエリを追跡し、(mysqlを使用していると仮定して)それらをで実行しようとしますEXPLAIN。また、クエリ自体も確認してください。巨大なテーブルでORDER BY RAND()の使用のように、そこには非常に愚かなコードがあるかもしれません。LIKE

そして最後の段階ではそれをすべて修正し、コード自体を厳しく調べます。PHPとJavaScriptの両方の側面で。

また、バージョンが非常に古いため、PHP5.3にアップグレードする必要があります。

于 2012-04-17T18:35:20.917 に答える
1

通常、探しているものがわからない場合、CMS/フレームワークに組み込まれているxdebugやその他のプラグイン/デバッグバーなどのツールでは見つけることができません。新しいレリックが最も簡単なソリューションです。ボトルネックを見つけることができます。数分後。

new relicは有料アプリですが、最初の14日間は無料かどうかをテストできます。問題を見つけるには、これで十分です。

xdebug、cpu&i / oモニタリング、mysql slowlog、クエリログなど、通常使用する他のすべてのツールとデータソースが統合されているので便利です。また、php / DB / frontend/networkでアプリが遅いかどうかも表示されます。

他のツールでデバッグするために時間を無駄にするのではなく、試してみてください。

CentOSインストールのガイドは次のとおりです:https ://newrelic.com/docs/php/php-agent-installation-redhat-and-centos

于 2012-04-17T18:39:19.687 に答える