ホームページ >バックエンド開発 >PHPチュートリアル >PHPレベルの自己評価
最近の PHP レベル評価を見て、今後の方向性が見えてきました。
これを共有して、私と同じように混乱している PHP 者がもう混乱する必要がないようにします。
レベル 0: (コンピューター プログラミングの基礎を持たず、訓練学校で 3 か月間 PHP の訓練を受けているか、以前に Web サイトを構築したことがあり、長い間コードを書いていないソーシャル ワーカーもいます)。特徴: 多くのことを知っており、実際の試験では、コンピュータでプログラムを書くのに時間がかかり、質問に正解することはほとんどありませんでした。
初心者レベル:
独自の Web サイトを完全に構築し、ドメイン名解決とバインド操作を実行できます。
Windows で環境を完全に構成でき、dedecms、ecshop、smarty およびその他のコードを理解でき、テンプレートを変更し、通常の二次的な機能を実行できます。発達。
thinkphp または YII を使用して CURD 操作を実行できます。企業 Web サイトのデータベースを移行およびバックアップできます。 ajax、Cookie、セッションなどの基本概念の使用をマスターします。 PHP の構文、配列、文字列を理解する。単純なランダム グループ読み取りなどの最も単純なアルゴリズムを作成できる。同時に、div+css HTML に関する特定のフロントエンドの知識を習得する必要がある。 js jquery (この種の PHP ほとんどのプログラマーは、アウトソーシング会社や企業の Web サイト保守会社で働いています)
初級:
Linux 上で LAMP または LNMP 環境を個別に構成できます (とにかくシンプルにする) 20 以上の Linux コマンドを使用し、Linux をマスターする 一般的な構造ディレクトリの。特定のネイティブ mysql を手書きして、mysql の事前管理を行うことができます。 MVC システムの構造を理解したら、システムの簡単な書き換えをいくつか実行して、開発要件との一貫性を高めることができます。 PHP ライブラリの概念を理解し、他の 5 つ以上の関数ライブラリを使用したことがある。ビジネス ロジックを理解し、API とデータ交換の概念を理解した後、PHP を使用して小さなモジュールを作成および保守し、さまざまなオープン API を迅速に完成させることができます。また、共同開発に SVN または git を使用することもできます (Tencent や WeChat API など)。併用用。 (スタートアップ企業から多数のPHPプログラマーが採用されています)
中上級:
LNMPログを理解でき、40以上のLinuxコマンド(組み合わせは新機能コマンドとみなされます)を使用しており、簡単なシェルスクリプトの記述が完了できます。 、自動化作業の一部を完了するために、必要な PHP サポート ライブラリを独自に作成してインストールできます。 nginx 上で、server/fastcgi_pass/access_log およびその他のオプションを包括的に設定します。 PHP の必要なサポート ライブラリを独自に作成してインストールできます
MySQL の操作に関連するさまざまな API (mysql/mysqli/PDO) の違いに精通します。 MVC の構造フレームワークをすぐに理解できます。一部のデータベースの読み取り効率と基本設計 (サインイン システムなど、効率を考慮せずに一連の単純なビジネス ロジックを独立して表現できます)、および基本的な InnoDB/MyISAM インデックス ストレージ構造と相違点 (クラスター化インデックス、B- Tree ); 基本的な InnoDB トランザクション処理メカニズムを理解し、いくつかの MySQL 例外処理ソリューションを理解します。同時に、nosql を理解し、Redis または Memcache を使用してデータを保存できるようになります。
プログラムのアルゴリズム構造がプログラムの動作効率に及ぼす影響を理解すると、モジュール開発に PHP を使用できると同時に、使い慣れたフレームワークを拡張および変換できます。
基本的な HTTP プロトコル (プロトコル コード 200/300/400/500、基本的な HTTP インタラクション ヘッダー) に精通している (中規模企業は PHP 記述機能の開発者を採用しており、中小企業の監督者はこのレベルであることが多い)
中級レベル:
シェル スクリプトをスムーズに使用して、多くの自動タスクを完了できます。awk/sed/perl も適切に動作し、多くのテキスト処理とデータ統計を完了できます。基本的に、特殊でない Linux プログラム (さまざまなライブラリ、パッケージ、3 つ目など) をインストールできます。 -MongoDB/Redis/Sphinx/Luncene/SVN などのパーティの依存関係など)、基本的な Linux サービスを理解し、Linux パフォーマンス インジケーター データの表示方法を理解し、
マルチコア構成を含むより複雑な Nginx 構成を理解します。 events 、proxy_pass、sendfile/tcp_* の設定、タイムアウトおよびその他の関連する設定とパフォーマンスへの影響を知る、nginx が Web サーバーに加えてプロキシ サーバー、リバース静的サーバー、その他の設定も実行できることを知る。権限を設定する、nginx をコンパイルして nginx に拡張する、nginx の基本的な動作原理 (マスター/ワーカー メカニズム、epoll) を理解する、nginx のパフォーマンスが Apache のパフォーマンスより優れている理由を知るなど。
従来の SQL 最適化 (group by/order by/rand 最適化など) に精通しており、MySQL を構築できることに加えて、MySQL データのホット バックアップとコールド バックアップ、読み取り最適化のためのマスター/スレーブ構成の使用も可能です。 innodb/myisam のパフォーマンスに影響を与える設定オプション (key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size /innodb_flush_log_at_trx_commit など)
私は PHP のフレームワークのほとんどをマスターしています (通常、プロジェクト開発には 2 つ以上を使用しています)。独自の MVC フレームワークを作成し、一般的なオブジェクト指向開発手法を理解する (抽象ファクトリ/シングル ケース/オブザーバー/コマンド チェーン/ストラテジー/アダプターおよびその他のモード) PHP 層がボトルネック層に達しているため、C についてある程度の理解が得られる/c++ を使用すると、C または C++ で特定の単純なプログラムを作成し、コンパイルやその他の操作を実行できます。パフォーマンスを最適化するために、HHVM などのツールが使用される場合があります
一般的なシステムを設計できるため、パフォーマンスと最適化を考慮する必要があります。Memcached と Redis の類似点、相違点、アプリケーション シナリオを理解し、Memcahed のいくつかの基本的な特性と制限 (最大値など) を理解する必要があります。 PHP とその使用法を組み合わせる方法、Redis の基本的な動作原理と使用法を理解する、従来のデータ型を理解する、どの型がどのようなシナリオで使用されるかを知る、Redis トランザクションを理解するなど。原理部分では、Memcached のメモリ構造 (スラブ機構) を一般的に理解できます。Redis は、一般的なデータ型 (SDS/リンクリスト/SkipList/HashTable) などの基盤となる実装ストレージ構造を理解します。 Redis のトランザクション、RDB、および AOF (それらのほとんど) について学ぶことができます。高度な PHP 要件は支店採用会社で説明されています)
高度な進歩:
C/C++ を使用して小規模なプログラムを作成でき、慣れていること。基本的な C/C++ 構文 (ポインター、配列操作、文字列、通常の標準 API) とデータ構造 (リンク リスト、ツリー、ハッシュ、キュー) を使用して、単純な Makefile ファイルを作成でき、単純な GCC/GDB プログラムを使用できる。簡単なデバッグ作業をコンパイルするには、基本的なネットワーク プログラミングについての一般的な理解が必要です。高度で複雑な Linux コマンド (watch/tcpdump/starce/ldd/ar など) を使用して作業を完了でき、比較的複雑なシェル スクリプト (500 行以上) を作成して、バックアップ、自動処理、監視などの多くのシェルの完了を支援できます。 awk/sed/perl などのアプリケーションに習熟し、さまざまな複雑な形式のデータを自由に操作、制御、処理し、分析できるようになり、Linux の内部メカニズムをある程度理解しています。カーネルモジュールのロード、起動時のエラー処理などの基本的な理解と、NFS、ディスク管理などのその他の関連事項についても理解します。
データベースに関しては、インストールと構成に加えて、大規模なデータのインポートとエクスポート、オンラインの大規模なデータのテーブル構造の変更、インデックス フィールドやその他のリスクの高い操作の追加や削除がすでに可能です。さまざまな問題のトレーサビリティ、マスターとスレーブの同期遅延問題の解決、コンピュータ ルーム間でのデータ同期ソリューション、MySQL の高可用性アーキテクチャなど、より複雑な MySQL の問題の処理は、すべて MySQL アプリケーション レベルに関係しています。トランザクション メカニズム (分離レベル、ロックなど) などの MySQL の中核となる主要なテクノロジーについて、ディスク最適化 (SAS から SSD への移行) を含む、MySQL パフォーマンスのためのトリガーやパーティションなどのテクノロジーをある程度理解して適用している。
php-fpm の動作メカニズム (さまざまな構成マシンでプロセス数を開始する php-fpm の計算と原理など) を理解し、zend エンジン (vm/gc/stream 処理) についての基本的な知識を持ち、次の書籍を読んでいること基本的な PHP カーネル ソース コード (または関連記事を読んだこと)、PHP の内部メカニズムのほとんどのコア データ構造 (基本型/配列/オブジェクト) の実装を理解していること、コア インフラストラクチャ ( zval/hashtable/gc); 基本的な PHP 拡張機能の開発を実行でき、拡張機能開発の中級および高度な知識 (minit/rinit など) を理解し、php と Hashtable の間のさまざまな通信および対話方法の詳細に精通していること。 apache/nginx (mod_php/fastcgi)。 (非常に強力な PHP プログラマーですが、範囲が狭すぎて、私は 1 人か 2 人しか知りません)
上級者:
基本的にコードのコア部分 (lmnp) を読んでおり、マルチプロセスとマルチプロセスに精通しています。スレッドプログラミング; マルチプロセスの状況について詳しくは、以下をご覧ください。 マルチプロセス間の通信方法の中には、通信方法を柔軟に選択できるものもあります (共有メモリ/セマフォ/パイプラインなど)。マルチスレッド プログラムをデバッグすると同時に、ネットワーク プログラミングに精通し、マルチプロセス モデル/マルチスレッド モデル/非同期ネットワーク IO モデルの違いと選択を理解し、さまざまな非同期の原理と違いに精通します。ネットワーク IO モデル (select/poll/epoll/iocp など)、一般的な非同期フレームワーク (ACE/ICE/libev/libevent/libuv/Boost.ASIO など) に精通しており、時間があればそれを使用してください。また、国内で開発されたライブラリ (Muduo など) を検討することもできます。同時に、優れた同時実行性の高いプログラム アーキテクチャ (リーダー/フォロー/マスター ワーカーなど) を設計することもできます。 C/C++ バックエンド サーバー開発 (メモリ管理、ログ出力、高い同時実行性、フロントエンドとバックエンドの通信プロトコル、サービス監視)、および各バックエンド サービスの RPC 通信の問題 (struct/http /thirft /protobuf など); GCC と GDB をより使いやすく使用して、プログラムの開発、コンパイル、デバッグを行うことができ、オンライン プログラムのコア化後に問題を迅速にトレースして解決できるようになります。 (phpの範囲を超えて、Dugu Qiuが失敗したように感じます)