プログラマー「ユアン」は大変な仕事です。私は土曜日に早起きして技術グループに挨拶をしましたが、誰も反応しないのを見て、「彼らはまだ起きていないのだと思います。まだ」と言うと、友達がそれを投げ捨てて、「私は残業している」と言いました!
Web 開発は大変な仕事です。クライアントを入手したら、基本的にはすべてうまくいきます。 Web 開発を行うには、バックエンドだけではなく、フロントエンドも理解し、精通する必要があります。
フロントエンドとバックエンドの両方をカバーする DevOps フルスタック エンジニアになることは、開発が必要なだけでなく、運用とメンテナンス、最適化の方法を理解する必要があることも間違いなく最も難しい仕事です。運用と保守を担当するのは、間違いなく優れたアーキテクトではありません。
しかし、幸いなことに、優れたエンジニアは非常に忙しく、フロントエンドとバックエンド、システム、運用、最適化に精通している必要がありますが、ツールボックスにはこの種の機能を実現するツールがまだたくさんあります。人生はとても難しい。
ここでは、DevOps 生活をより良くする 4 つの成果物を紹介します。それぞれ Xdebug、XHProf、OneAPM、SocketLog です。
Xdebug
開発者としてできる最も安全な方法は、機能レベルでもパフォーマンス レベルでも、自分が書いたコードをよく知っていることです。 Web PHP 開発を行う場合、最も難しいことの 1 つはコードのデバッグです。スクリプト言語として、リモート サーバー上で実行する場合、クライアントが生成するのは HTML コードだけです。一般に、シングル ステップ デバッグや変数監視などはもちろん、実行状況を正確にデバッグすることはできないと考えられています。実際、これは誤解です。リモート サーバーで実行されているコードを簡単にデバッグできるようにする PHP 拡張機能 Xdebug があります。
方法は非常に簡単で、Xdebug から最新バージョンのソースコードをダウンロードします。 wget 解凍:
tar –zxvf xdebug-<span class="number">2.3</span>.<span class="number">3</span>.tgz<br>
cd xdebug-<span class="number">2.3</span>.<span class="number">3</span> phpize<br>
.<span class="regexp">/configure –with-php-config=/usr</span><span class="regexp">/bin/php</span>-config<br>
make<br>
make install
対応する設定を php.ini
に追加します。 注意すべき点が 2 つあります。
1. xdebug は zend_extension です
2. デフォルトのポートは 9000 ですが、php-fpm のデフォルトのポートと競合するため、ここでは代わりに 9100 を使用します
[xdebug]<br>
zend_extension=<span class="regexp">/usr/lib</span><span class="regexp">/php/extensions</span><span class="regexp">/no-debug-non-zts-20121212/xdebug</span>.so<br>
xdebug.remote_enable=on<br>
xdebug.remote_handler=dbgp<br>
xdebug.remote_host=localhost<br>
xdebug.remote_port=<span class="number">9100</span>
これで簡単に使い始めることができます。 ThinkPHP アプリケーション開発を例に挙げてみましょう。 ThinkPHP は、比較的複雑な呼び出し階層を持つ典型的な単一エントリのアプリケーションです。そのため、コールスタックを理解するのは非常に面倒です。特定の行のコールスタックを取得したい場合は、PHP 独自の debug_backtrace
関数を使用して取得できますが、あまり直感的ではなく、配列を返すだけです。 Xdebug はこれらすべてを視覚化できます。
Netbeans に付属のデバッグ ツールは Xdebug で使用されます。まず、環境設定で PHP デバッグ ポートを 9000 から 9100 に変更し、その他は変更しません。 最初の行で停止 が選択されていることに注意してください。これは、PHP プログラムのデバッグ時に PHP コードの最初の行に達すると停止します。 ThinkPHP では、エントリー ファイル インデックスの最初の行で停止します。 php 。
この例では、著者がレンタカー管理システムの例を作成しました。プロジェクト名は zuches です。 http://localhost/zuches
でアクセスできる場所にコードをデプロイします。インデックス ファイルは、index.php です。
index.php がエントリ ファイルなので、index.php を右クリックして [デバッグ] を選択します。
その後、Netbeans は自動的に次のアドレスを開き、デバッグ状態に入ります: http://localhost/zuches/index.php?XDEBUG_SESSION_START=netbeans-xdebug
同時に、実行場所インジケーターは、index.php の最初の行に留まります。以下のように:
をクリックすると、IndexController.class.php
の index
メソッドにブレークポイントが追加されるため、位置表示は対応するブレークポイントに留まります。
この時点で、中断時のコールスタックと変数を表示できます。配置された各クラスと対応するメソッドは、スタックから簡単に見つけることができます。
ローカル変数やインスタンス属性、Cookie、送信されたデータなど、さまざまな変数が変数テーブルで一目でわかります。
つまり、Xdebug を使用すると、サーバー側のページや API 開発を行っている場合でも、デスクトップ アプリケーション開発と同じようにコードのすべての行をデバッグできます。
Xdebug は、シングルステップのデバッグに使用されるだけでなく、リクエストの実行ログを収集し、各関数の実行プロセスを記録することもできます。これらのログを wincachegrind
などのツールで分析すると、関数の呼び出しスタックと費やされた時間を確認できます。ここでは詳細には触れませんし、あまりお勧めしません。なぜなら、この分野では XHProf
の方がはるかに軽量かつ強力であり、ログをダウンロードして分析する必要があまりないからです。