デバッグずプロファむリングに぀いお䞀蚀蚀っおみたしょう[PHP]

すべおは怠inessから来おいたす。 他の誰かの非垞に倧きなプロゞェクトがあり、そこで小さな線集を行う必芁があるか、スクリプトを䜜成したが、最適化が必芁であるこずはすぐにはわかりたせん。 になる方法 珟圚、非垞に倚くのデバッグツヌルを䜿甚できるため、コヌドを読み取っお分析し、画面たたはファむルvar_dumpなどに各ステップを衚瀺するこずは必ずしも効果的ではありたせん。 頻繁に発生する...

Xdebug Debugger and Profiler Tool -PHP拡匵。 サヌバヌぞのむンストヌルず蚭定が必芁です。 衚瀺可胜関数呌び出しスタック、メモリ割り圓お。 機胜プロファむリング、コヌドカバレッゞ分析、無限再垰に察する保護、むンタラクティブなスクリプトデバッグ。 Xdebugログ芖芚化゜フトりェア Webgrind -XdebugをプロファむリングするためのWebベヌスのむンタヌフェむス、PHPで蚘述されたMacGDBp -Xdebugを䜿甚しおPHPアプリケヌションをデバッグできるMac OS Xクラむアント。 Linux GUI kcachegrind 。 無料です。 倚くのIDEず統合したす。 xdebugを䜿甚したPHPアプリケヌションのプロファむリングを参照しおください。 php.iniでオプションを有効にするず

html_errors = On 

var_dumpの出力ず゚ラヌメッセヌゞをフォヌマットしたす。

Xhprofは、facebookのPHP拡匵機胜です。 サヌバヌぞのむンストヌルず蚭定が必芁です。 各関数の実行時間、メモリ䜿甚量、レむテンシ、呌び出し数などを収集できたす。 この拡匵機胜は、PECLリポゞトリから入手できたす 。 こちらのドキュメントをご芧ください[tyts] 。 たた、xhprofずFirePHPを䜿甚しお、PHPアプリケヌションのプロファむリングずデバッグを行いたす 。 利点のうち、システムにあたり負荷をかけないので、戊闘にかけるこずができたす。 無料です。

DBG PHPデバッガヌずプロファむラヌ-PHP拡匵。 サヌバヌぞのむンストヌルず蚭定が必芁です。 IDEたたはコン゜ヌルから、テストサヌバヌや実皌働サヌバヌで䜜業し、ロヌカルたたはリモヌトでスクリプトをデバッグできたす。 有料/無料版。

ZendDebug -PHP拡匵、Zend Studioの䞀郚有料IDE。 サヌバヌぞのむンストヌルず蚭定が必芁です。 これにより、xdebug、Zend StudioのGUI、たたはZend Server IDEずほが同じこずが可胜になりたす。 有料。 以䞋で詳现に怜蚎したす。

MemtrackはPHPの拡匵機胜です。 メモリリヌクを怜玢できたす。 Crownによっお、たたはデヌモンずしお実行されるスクリプトを確認するず䟿利です。 無料です。 [tyts]を参照

APD Advanced PHPデバッガヌはPHP拡匵です。 xdebugずの競合は匱いですが、memtrack機胜がありたす。 IDEずの統合は䞍十分ですが、コン゜ヌルむンタヌフェむスがありたす[ tyts ]を参照。 無料です。

DTrace + PHPはPHP拡匵機胜です。 䜎レベルのデバッグ。 [tyts]を参照しおください。 Straceやその他のシステムデバッガヌの存圚を忘れないでください。これらは、いわば「犬が暎走した」堎所を瀺すこずができたす。 䟋えば
strace -p 1111
システムコヌルスクリプトの分析、PID = 1111。 ネットワヌクアナラむザヌwireshark Windows、 ngrep 、 tcpdump Linux-ネットワヌクトラフィック、プロトコルなどの分析甚

FirePHP -phpで蚘述されたクラス+ FireFoxの拡匵。 phpメ゜ッドを呌び出すこずにより、デバッグメッセヌゞをFirebugコン゜ヌルに送信できたす。 すべおの情報はX-FirePHP-Dataのヘッダヌを介しお送信されるため、ペヌゞのメむンコンテンツず重耇したせん。 無料です。 Firebugを䜿甚したPHPのデバッグを参照しおください

php-console -Google Chromeのphp +拡匵で曞かれおいたす。 Google Chrome専甚のFirePHPに類䌌しおいたすが、機胜は倚少異なりたす。 無料です。 php-consoleを参照しおください

phpで蚘述されたPHP_Debugクラス。 PHPコヌドのデバッグに圹立ち、スクリプトの実行パスを衚瀺し、すべおの倉数、ランタむム、むンクルヌドファむル、実行されたク゚リ、倉数を監芖したす...この情報はスクリプトの実行䞭に収集され、その最埌に衚瀺され、い぀でも䜿甚できたす。 無料です。

ピンバは、リアルタむムの監芖および統蚈サヌビスです。 芋る
PHPをリアルタむムで監芖したす
Pinbaを䜿甚しおPHPコヌドのパフォヌマンスを監芖したす 。 無料

䞀般的な蚘事
PHPプロファむリング
耇雑なWebアプリケヌションのデバッグ-運甚サヌバヌでの効果的なバグクラッシャヌ

最新のCMS / CMF / Frameworkのデバッガヌ 。 私たちはそれらを考慮したせん、なぜなら 倚くの堎合、それらは特定のものであり、特定のシェル甚に蚭蚈されおいるため、倖郚で䜿甚したりIDE、蚭蚈を倧幅に倉曎せずに適甚したりするこずはできたせん。

アプリケヌションのボトルネックを収集しお分析するには、syslog集䞭ストレヌゞ技術が圹立぀堎合がありたす。[ tyts ]を参照しおください。

ZendDebugに戻りたす。 私は䞻にZend Studioを䜿甚しおいるため、これを䜿甚するのが最も䟿利です。 これにより、スクリプトの進行状況をすぐに理解でき、IDEからのコヌドのナビゲヌションがサポヌトされたす。 IDE以倖のサヌドパヌティツヌルは必芁ありたせん。 䞀床セットアップしお䜿甚するので、ずおも䟿利です。

Zend Studioでのスクリプトのデバッグずプロファむリングは、xdebugたたはZendDebugを䜿甚しお少なくずも2぀の方法で可胜です。 xdebugを䜿甚しおサむトをプロファむリングしたのは、今ではうたくいきたせんでした。これは䞍可胜であり、デバッグのみです。

ロヌカルコヌドのデバッグに぀いおは、Zend Studio 5.5 [tyts]の時代に曞き戻されたした。 それ以来、ほずんど倉わっおいたせん。 しかし、Webサヌバヌずデバッグコヌドがリモヌトサヌバヌにある堎合、問題が発生したした。 倚くの堎合、このようなサンドボックスは倖郚から閉じられ、䜜業に必芁なポヌトのみが開かれたす。 ただし、SSHを介しおこのようなサンドボックスにアクセスできる堎合、ファむアりォヌルの機胜を劚げるこずなくZendDebugを構成できたす。

今埌、SSHトンネルを䜜成する必芁があるこずに泚意しおください。 この堎合にSSHトンネルが必芁な理由に぀いお少し説明したす。

デフォルトでは、Zend StudioはデバッグサヌバヌにHTTPリク゚ストを送信しおリモヌトデバッグセッションを開始したす。 この芁求には、ZendDebugサヌバヌにむンストヌルされおいるがZend Studioぞの新しい接続を開始しおデバッグ情報を䞭継するずきに䜿甚するリタヌンアドレスパラメヌタヌIPアドレスずポヌト番号が含たれおいたす。 ずころで、Zend Studioに付属のコンポヌネントをむンストヌルするこずにより、IDEずブラりザの䞡方からデバッグセッションを初期化できたす。これは非垞に䟿利です。

通垞のデバッグセッション。

たずえば、コヌド、WEBサヌバヌ、およびIDEがロヌカルコンピュヌタヌに配眮されおいる堎合は、定期的なデバッグセッションが行われたす。

ただし、倚くの堎合、WebサヌバヌはIDEファむアりォヌル、ルヌタヌ、プロキシなどず共有されたす。 これは、SSHトンネルが圹立぀堎所です。

トンネルの堎合、デバッグセッションを確立するプロセスは、2぀の䞻芁なステップで構成されたす。
-SSHトンネルの䜜成。
-SSHトンネルを介しおトラフィックを送信するためのZend Debugger蚭定。

SSHトンネルを介したデバッグセッションの図は、次の圢匏を取りたす。
画像
SSHトンネルを介した通垞のデバッグセッション

Zend Studioは、デフォルトでポヌト10137を開きたす。以䞋の䟋で䜿甚したす。 必芁に応じお、別のポヌトを割り圓おるこずもできたす。

LinuxたたはMac OS XでSSHトンネルを䜜成するには、コマンドラむンから実行できたす。
ssh <Zend Studioポヌト>127.0.0.1<デバッグサヌバヌを開くためのポヌト> @䟋

 user@workstation:~> ssh -R 10137:127.0.0.1:10137 user@debugserver user@debugserver's password: <enter user's password on the debug server> Welcome to the Debug Server! user@debugserver:~$ 


Microsoft WindowsでSSHトンネルを䜜成するには、 PuTTYを䜿甚できたす。 有効なSSH接続を䜜成した埌、さらにトンネルを構成する必芁がありたす。
画像

IDEから、ポヌト10137ずロヌカルIPアドレス127.0.0.1がリッスンしおいるこずを確認したす
画像

トラフィック調敎の実践は、他の目的に圹立぀堎合がありたす。 たずえば、リモヌトデヌタベヌスで127.0.0.1などずの接続のみが蚱可されおいる堎合、ロヌカルナヌティリティを䜿甚しおDBMS SQLダンプを実行したす。

䞊蚘のリストから、誰でも毎日䟿利なツヌルを芋぀けるこずができるず思いたす。 そしお、その開発はさらに倚くの喜びをもたらし、疑問に答えたす。 なぜ私たちは嘘を぀いおいるのでしょうか」

デバッグず゚ラヌのないスクリプトをお楜しみください。ご枅聎ありがずうございたした。

udp。 php-consoleを远加、ありがずうArik

Source: https://habr.com/ru/post/J210202/


All Articles