PHP プログラマーの問題解決能力の 8 つのレベル

WBOY
リリース: 2016-07-29 09:14:58
オリジナル
908 人が閲覧しました

この話は昔から言われていますが、面接で評価される能力の中で、学習能力よりも問題解決能力が第一位であり、優先順位が高いと個人的には思っています。問題を解決する能力は、プログラマー思考能力、適応力、探索能力などを示すだけでなく、彼の経験も示すことができます。問題解決能力が低いと面接に合格することはできません。

これは例です。php test.php などの PHP スクリプトを実行すると、文字列が返されることが期待されます。しかし、実行後に情報は出力されません。この時点でプログラムのどこが間違っているのかをどうやって知ることができるのでしょうか?ここで問題解決能力は8段階に分けられ、レベルが高いほど能力が高くなります。

PHP 程序员解决问题 8 大级别的能力

Lv0 PHP エラー メッセージを確認してください

プログラムが期待した結果を達成できませんでした。これは、コードが間違っていることを証明するための最初のステップです。エラー メッセージを無視した場合、この人物はプロのプログラマーの職に適していないことを示します。場合によっては、php.ini 設定でエラー表示がオフになっており、エラー メッセージを開くには php.ini を変更する必要があります。この場合、エラー メッセージはログ ファイルにエクスポートされます。この場合は、直接 tailf を実行できます。 php_error.log でエラー メッセージを確認します。

エラーメッセージが表示されたら、プログラムコードの問題を直接見つけるか、Google/Baiduで検索して問題を解決できます。

注: エラー表示をオンにする方法は、php.iniのdisplay_errors/display_startup_errorsをOnに設定することです

    php.iniのerror_reportingをE_ALLに設定します
  • PHPコードにerror_reporting(E_ALL)を設定します
  • Lv1は複数ありますphp または php-cli と php-fpm のバージョンは、異なる設定を読み込みます
php には複数のバージョンがあり、どの PHP を使用するかを把握するか、絶対パスを追加して php バージョンを指定します。この PHPer がこのレベルのテストの 50% に合格したことを示します。

別の状況として、php-cli と php-fpm で得られる実行結果が異なる場合があります。たとえば、Web ブラウザーでの実行は正しいが、cli での実行は間違っています。現時点では、2 つの環境で読み込まれた php.ini が異なることが原因である可能性があります。 cli で、php -i |grep php.ini を使用して、ロードされている php.ini を取得します。 fpm では、phpinfo() 関数を通じて php.ini の絶対パスを取得できます。

Lv2 var_dump/die 変数値情報を出力するシングルステップデバッグ

これはプログラムのデバッグの一般的な方法であり、問​​題を解決するための最も簡単で大雑把かつ効果的な方法でもあります。より高度な方法としては、PHP の Trace クラス/log クラスを使用する方法があり、phpstorm+xdebug を使用して IDE ツールでデバッグできます。

Trace ツールは、スクリプトの消費時間を分析し、PHP プログラムの

パフォーマンスの最適化

を実行することもできます。

3 つのテストすべてに合格したことは、このプログラマーがプロの PHP プログラマー

が持つべき問題解決能力を備えていることを示しています。

PHP プログラマー このレベルに合格していれば、ほとんどの状況に十分対処でき、中小規模の Web サイトではプレッシャーはありません。 Lv3 strace ツールを使用してプログラムの実行を追跡する

strace は、システム コールの実行の表示、strace php test.php、または strace -p プロセス ID の使用に使用できます。 strace は、現象から本質を洞察し、プログラムの実行プロセスを把握するのに役立ちます。この方法は、大規模な Web サイトや大企業で最も一般的に使用されます。 strace を知らない場合は、申し訳ありませんが、strace を知らない PHPer は受け入れられません。

strace は実際にはプログラマーの基礎を試すテストです。オペレーティング システムの操作方法を知らず、基礎となる層をまったく理解していない場合は、間違いなく strace を使用することはできません。もちろん、strace は PHP コード内のデッド ループを解決できません。たとえば、php-fpm プロセスの CPU が 100% であることが判明した場合、strace はそれを解決できない可能性があります。 strace は、通常 IO 操作であるシステム コールを参照するため、CPU が 100% になることはありません。

Lv4 tcpdumpツールを使用してネットワーク通信プロセスを分析します

tcpdumpはネットワークカードのデータ通信プロセスをキャプチャでき、データの内容もキャプチャできます。 tcpdump を使用すると、TCP SYN 3 ウェイ ハンドシェイクが開始されるとき、FIN パケットが送信されるとき、RST パケットが送信されるときなど、ネットワーク通信プロセスがどのようなものであるかを確認できます。これは基本的なスキルです。tcpdump を理解していない場合は、ネットワークの問題を解決する能力がないことを意味します。

Lv5は関数呼び出しの消費時間と成功率をカウントします

xhporf/xdebugを使用してPHPリクエストの呼び出しプロセスをエクスポートし、各関数呼び出しのプロセスと消費時間を分析します。 PHP プログラムの

パフォーマンスのボトルネック

を分析し、最適化できるポイントを見つける能力。

mysql クエリ、curl、その他の API 呼び出しなどのネットワーク サービスへの別の呼び出しでは、開始と終了のマイクロタイムを記録し、false が返されたかどうかで、呼び出しが成功したかどうか、およびにかかった時間を取得できます。 。データを要約し、呼び出しの成功率、失敗率、平均遅延を整理できれば、このプログラマーがインターフェイスの品質に敏感であり、大規模な Web サイト プロジェクトの経験があることが証明されます。

Lv6 gdb の使い方

gdb は、C/C++ プログラムをデバッグするための強力なツールです。gdb を熟練的に使用するには、特定の C/C++ スキルを持つプログラマーが必要です。上記の strace は PHP プログラムの CPU100% を追跡できませんが、gdb はそれを追跡できます。さらに、gdb は PHP プログラムのコアダンプの問題も解決できます。

gdb -p プロセス ID を php-src の .gdbinit zbacktrace やその他のツールと組み合わせて使用​​すると、PHP プログラムの実行を簡単に追跡できます。上記の CPU 100% と同様に、PHP プログラムではデッドループになることが多く、gdb で何度も確認することで、おおよそのデッドループの場所を取得できます。 gdb の問題を解決できる能力を持つ PHP プログラマーはほとんどいません。 gdb を使用して PHP の問題を解決できれば、この PHPer は面接に 100% 合格し、より高い技術評価を得ることができます。 Lv7 PHP カーネルと拡張機能のソース コードを表示する PHP カーネルと拡張機能のソース コードに精通していれば、PHP プログラムの最も複雑なメモリ エラーを解決できるようになります。このような

PHPプログラマー

は稀です。 gdb ツールを使用し、PHP ソース コードに精通していれば、オペコード情報、execute_data メモリ、

グローバル変数

ステータスなどを表示できます。 上記では、内容の側面も含めて、PHP プログラマーの問題解決能力の 8 つの主要なレベルを紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート