私はどのPHPコード/関数、MySQLリクエスト、そして/またはプラグインがサイト上のページを遅くしているかを監視する最良の方法を見つけようとしています。
Wordpressのプラグインやfirebug(firephp)を含むソリューションを含むさまざまなオプションがあることを私は知っていますが、皆さんは何が最良のアプローチだと思いますか?
個人的には、Wordpressをインストールするたびにデフォルトでインストールできるコードを用意するのが理想的な解決策だと思います。 ?= debugのようにURLの末尾にオプションのエントリを追加した場合は、デバッグ/監視/レポート作成のみが実行されます。セキュリティ上の理由から、最初にwordpress管理領域にログインし、ハッシュキーを作成してそれをURLに追加する一時デバッグキーを作成する必要がある場合(debugkey = v09098v09aq2ov1a8923のように)にのみ有効です。 30分.
しかし、実際のデバッグ情報に戻ると... firebugを使用することは多くの状況で素晴らしいと思いますが、オプションで、たとえば使用されるすべての関数、フック、またはフィルターをオーバーレイするURLに何か他のものを追加できると価値があると思いますそれぞれの実行時間とともに特定のページで。
いずれにせよ...私はここであなたの多くが同様にこの問題に直面したにちがいないと考えました、そしてそれであなたの問題を解決するためにあなたが利用しているどんな解決策でも感謝します。
これを読んでいるかもしれない他の人のための具体的なことと、それを正しくインストールするための具体的なことを説明してください。
_ updated _ 専用Linuxサーバーの実行
複数のツールと可能性があります、そして、手近なものを手に入れることがいいだろうと確信してください。私は、デバッグフラグを提供するプラグインの作者を知っているので、何が起こっているのかを簡単に分析することができます。
プラグインに関しては、私はそれをテストしていませんが、いくつかのスクリーンショットを見ました、そしてそれは少なくとも有益です: デバッグバー(Wordpressプラグイン) そして BlackBoxデバッグバー(Wordpressプラグイン) 。
もう一つはそれほどよく知られていないhooktracerです: SJフックプロファイラ 。
私は xdebug を開発とテストシステムのために強くお勧めします、あなたがものをプロファイリングまたはデバッグする必要があるなら、それを持っているのはうれしいです。
XHProf (オープンソース、彼らのパフォーマンス監視のためのFacebookスタックの一部)はセットアップが面倒です(少なくとも私のようなWindowsの人にとって)が、PHPのための非常に徹底的で便利なパフォーマンスプロファイラーツール。
私はそれが私のローカルテストスタックのための勝利版を持っていたらいいのにと思います。 :(
Krumo phpクラス は10秒以内にどのインストールにも追加でき、ローカルの設定には依存しません。だからあなたがあなたのオフィスから出て行っていなくても、あなたはあなたと一緒にデバッグツールを手に入れた。他のファイルの後に必ずロードし、if ( current_user_can('manage_options') ) krumo::enable();
を使ってロードするようにしてください。そうすれば、すでにライブのものをデバッグしている場合でもゲストや他のユーザがあなたの悪ふざけのメッセージに遭遇しません。
あなたはあなたのサーバー配置が何であるかを示していません。共有ホスティング環境にいる場合は、選択肢が限られています。それがあなた自身のサーバーであるならば、あなたは全体像を得るために様々なプロファイリングツールをインストールすることができます。 このスレッド _ SOを見てください。
また、配信されたページの速度が遅くなるのは、PHP/MySQLに関連するものがいくつかあることによるものです。 DNSの問題、クライアントまたはサーバー側でのネットの混雑、遅くなっているのではなく早めにたくさんのJSがロードされているような計画の悪いページなどがあります。
基本的なHTMLページのネットワーク接続+サーバー配信の基本的なフードチェーンをテストするには、 Apache Benchmark プログラムを使用してみてください。気をつけて!あなたはこの子犬を使ってサーバーからがらくたを打ち負かすことができます、そしてあなたが彼らのマシンにDOS攻撃の一人用の偽物をしたならあなたのホスティング会社は面白くなりません。
更新:OK、専用のLinuxサーバーでは重要な選択肢があります。特に、 xdebug をダブルダウンして、コードの実行をプロファイルすることができます。プロファイラーの下で実行された2、3回の実行が、マシンを噛み合わせる無邪気な外観の機能に明るい光をどれだけ早く当てることができるかは驚くべきことです。
すぐに何も表示されない場合は、必要以上に時間がかかるようなルーチン(thatが意味するものは何でも)および/またはたくさんと呼ばれるように思われるルーチンを探します。後者は、単に特定の値の結果をキャッシュすることで修正できます。これが、異なる高コスト関数が異なるパラメーターで呼び出されることを含む一般的な問題である場合は、 memoizing /影響を受ける関数を調べることができます。私はこれをPythonで何度かしましたが、PHPではしませんでした。これは 一人のアプローチ に関する記事です。この件に関しては他にも投稿があります。