資格のPHPプログラマーとして何技術を把握する必要がありますか?

資格のPHPプログラマーとして何技術を把握する必要がありますか?
中級PHPプログラマ

1.Linux

滑らかなシェルが完了した作業の多くを自動化するスクリプトを使用することができます。awkは/ SED / perlのもうまく動作、テキスト処理と統計的に多くの作業を行うことができます。さまざまなライブラリを含む非固有のLinuxプログラム(のほとんどをインストールするには基本的にできパッケージには、そのためなのMongoDB / Redisの/スフィンクス/ Luncene / SVNなど)などのサードパーティに頼る; Linuxの基本的なサービスを理解し、以下の問題の追跡およびその他の基本的なLinuxのを知って、パフォーマンスデータのLinuxを表示する方法を知っています

  1. Nginxは:

上記の第一段階に基づいて、複雑なnginxの構成のいくつかの理解、イベント、マルチコア構成を含む、プロキシパス、sendfileの/ TCP *コンフィギュレーション、および既知のコンフィギュレーション・タイムアウトのパフォーマンスに影響を与える; nginxのWebサーバを除いて知っている、プロキシサーバも取ることができています基本的なnginxの設定のチューニングを知っている;構成された静的なサーバを逆に権限を設定する方法を知っている、nginxののnginxのをコンパイルするように拡張、nginxのの基本的な動作原理(マスタ/ワーカメカニズム、ファイルディスクリプタを)知っている、パフォーマンスよりも、なぜApacheのnginxの性能を知っていますそして十分な知識。

  1. MySQLの/ MongoDBの:

MySQLを構築することに加えて、MySQLのバックアップデータも高温と低温とすることができるだけでなく、影響を知っている、MySQLの開発における上記第一段階に基づいて、(/ランドの最適化などによって/順によってグループ)は、従来のSQLの最適化を含むチップの多くを有しますほかにも、このようなmysqlのマスター・スレーブ同期環境を構築する方法を知っているような特別な設定オプションのいくつかを、理解して;、だけでなく、これらのオプションはどのくらいの値で右になるように構成されていることを知っている(例えばkey_buffer / query_cache / sort_buffer / innodb_buffer_pool_size / innodb_flush_log_at_trx_commitなど)のInnoDB / MyISAMのパフォーマンス設定オプション/ slow_log含めて、知っているMySQLのトレースのパフォーマンスを説明し、そうではなく、基本的なインデックスの知識処理を知っている;、の様々なbinlog_formatの違いを知っている原則の側面は、基本的なMySQLのアーキテクチャ(サーバ+ストレージエンジンを)理解するために、基本のInnoDB / MyISAMのを知っていますストレージ構造と異なるインデックス(クラスタ化インデックス、Bツリー)は、基本のInnoDBトランザクション処理を知っている;のMySQLの治療オプション最も異常な状況を理解する(または治療の選択肢を見つけるために場所を知ります)。条件は、MySQLのとの違いを対比するための方法、に代わってのNoSQLのMongoDBデータベースを見つけることをお勧め、と同僚はPHPとのMongoDBの基本的な知識の開発と合わせ、適切なアプリケーション・シナリオでのMongoDBの慎重な使用を確保することができましたが、許可します。

  1. Redisの/のMemcached:

キャッシングが参加するほとんどのミッドレンジシステムでは、その基本的なキャッシュを理解するようにしてください。類似点と相違点とは独立のRedis / Memcachedのをインストールする機能のMemcachedのとRedisのアプリケーションシナリオを知っている、Memcahedは、最大値として、基本的な特性と限界のいくつかを理解して値値は、その使用と組み合わせてPHPを知って、Redisのは、ように、基本的な動作原理を理解し、一般的なデータ型に使用する、Redisのトランザクションを理解し、アプリケーションシナリオの種類を知っています。原理の部分は、おそらくより多くのMemcachedのメモリ構造(スラブメカニズム)、その上で基礎となる実装構造(SDS /チェーン/ SkipList /ハッシュテーブル)に保存されている一般的なデータ型の理解にRedisのと、Redisのトランザクションを見る方法、RDB、AOFのメカニズムを理解することができます良いです

  1. PHP:

インストール構成の第一段階の能力に加えて自由にサードパーティの拡張機能とPHPコンパイラのインストール構成の様々なインストールすることができ、構成がパフォーマンス理解のphp-FPMに影響を与えます(設定オプションと意味合いの最もなどmax_requests / max_children / request_terminate_timeoutなど)、差分のmod_php / FastCGIのを知っているとPHPは、様々な基本的な技術の点で、さらに、反射等のPHP / SPL /レベル構文のオブジェクト指向の深さ理解の特別な特性を含む、PHPの種々にいくつかの深さを含む、巧みにすることができました;フレームワークは、MVCフレームワークより従来PHPが起こって、内部基本PHPフレームワークは、機構および設計を実装する知るためにコードを読み取った(抽象工場/シングルトン巧みアプリケーション開発にPHP開発従来のデザインパターンを使用することができました/観測/コマンドチェーン/戦略/アダプタモードなど);推奨事項は、独自のPHPのMVCフレームワークを開発する開発者は、完全に、自由化MVCパターンの彼らの深い理解を作成するだけでなく、彼らはすぐにプロジェクト開発事業をアップグレードすることができるようにすることができます。おなじみのPHP PHPのセキュリティ上の問題のほとんどを解決するためによく知られている様々なコードの最適化手法 ; PHPの実施のためのメカニズムの基本原理に泊まっ(Zendのエンジン/基本的なメカニズムを拡張します)。

  1. システム設計:

ほとんどのミッドレンジシステムは、選択のためのサイトアーキテクチャ、データベース、PHPの基本的な枠組みを設計することができ、調査とハンドリング性能試験、同様の完了までに:ブラウザ - > CDN(イカ) - > nginxの+ PHP - >キャッシュ - サイトの>データベース構造基本設計開発・保守、毎日交通の発展をサポートすることができ、千万の基本的なウェブサイトのメンテナンスに百万。

シニアPHPプログラマー

基本LNMPプログラムに加えて、だけでなく、特定の方向や地域での綿密な調査を持つことができる:フォーカス。(開発の奥行き寸法)

目的:また基本的なPHPの事業展開を完了するために、だけでなく、深さの中で最も複雑な技術的問題を解決するために、独立した大規模システムの設計および開発作業の完了を設計することができ、彼らは独立して、詳細な技術的方向性を保持することができ、この比較にプロ。(例えば、MySQLは、nginxの、PHP、Redisのいずれかの方向にように綿密な研究で)

  1. Linuxの場合:

第二段階の能力に加えて、Linuxのパフォーマンスの監視と追跡の下で、通常の動作に加えて、だけでなく、仕事(時計/ tcpdumpを/ starce / LDD / ARなど)を完了するために、はるかに少ない洗練されたコマンドを使用することができ、シェルスクリプトの面で、書くことができましたより複雑なシェルスクリプト(500行以上)は、バックアップ、自動化の多くを完了し、シェルの作業を監視支援するため、すでにのawk / sedの/ Perlアプリケーション燃えるような純粋な青、自由に操作できる各種制御処理テキスト統計分析のために複雑なデータ形式;、カーネルモジュールがロードされ、起動時のエラー処理をLinuxの内部のメカニズムのいくつかを理解している、などの基本的な治療法があり、いくつかの他の事が理解されている一方で、そのようようにNFS、ディスク管理、およびとして;

  1. Nginxは:

上述した第2相に基づき、nginxのは、そのようなので、上の監視、パフォーマンスの最適化、複雑な問題に対処し、として、より多くのnginxの上での詳細な運用・保守作業を行うことができる非常に熟練して動作することができました。個人的な関心を参照して、より集中側面が考慮することができます深さでの主なように、特定のマスタ/ワーカ作業メカニズム、内部nginxのイベント処理、メモリ管理、およびなどのソースコードを、読みの初めに仕事のnginxの主要部に関する研究、;同時にnginxの拡張可能な開発を学ぶことができ、あなたは自分のプライベートの一部をカスタマイズすることができます拡張は、nginxの+のLuaの理解のある程度がある間は、あなたがより良いモードと組み合わせて使用​​することができるかどうかを確認し、この段階ではnginxのの原則の深い理解を必要とし、徹底したプロのnginxの方向と考えることができます。

  1. MySQLの/ MongoDBの:

上記第二段階に基づいて、MySQLの用途では、最適化前の基本的なSQLに加えて、そのようなデータ等の大量のインポートおよびエクスポート、テーブルの構造・マス・インデックスフィールドラインデータの変更や削除などの操作錯体を完了することができますおよびその他のリスクの高い操作は、インストール構成に加えて、部屋の向こうの問題、マスター・スレーブ同期遅延問題解決、データ同期の様々なプログラムをトレースするなど、より複雑なMySQLの問題を処理することができました、MySQLの高可用性アーキテクチャはように理解して関与しています。アプリケーションレベルでのMySQLは、そのようなトランザクション機構(分離レベル、ロック、など)MySQLのコアとキー技術に精通、特定の理解およびトリガーのアプリケーション、分割技術がある;のMySQLの性能、ディスクの最適化を含む(SASマイグレーションSSDに)、サーバの最適化(メモリ、サーバは、*(表示状態/ショーを表示するために、他のコア性能二段階の最適化オプション(innodb_log_buffer_size / back_log / table_open_cacheの/ thread_cache_size / innodb_lock_wait_timeout等)に加えて、)それ自体を構成し、接続プーリングソフトウェア選択アプリケーションプロフィールのアクション文)クラスです 理解、トレースするパフォーマンスの問題のほとんどを完了することができ、防災、BINLOGホットとコールド・バックアップの深い理解、マルチIDCのバックアップなど、MySQLのバックアップ技術、との綿密精通; MySQLの原則の観点から、例えば、知っているより多くがあり、 MySQLの作業機構条件が許せば、CSVを参照することができ、学習または等元ストレージエンジン(MyISAMテーブル/ INNODB / TokuDB)の理解、そのようなマスタ - スレーブ同期(コピー)として、ソースコードの一部を読み取る技術を学習ソースコードを開始しますエンジンは、いくつかのデータを保存するのMySQLの理解を高めるために、独自のシンプルなストレージエンジンを開発する、彼らが興味を持っている場合、プロセスには、あなたはまた、DBA方向に考えることができます。MongoDBのレベルは、例えば、はるかに少ない作業することができ、特定のシーンに合わせて、MongoDBのオンラインアプリケーションを起動する、またはいくつかの運用データの分析および処理ラインを行う読み取り、書き込みの場合に考慮することができるが、コアは、より良い、深さRMDBSを理解することですそして、異なるのNoSQLのアプリケーション次のシーンでは、または関心の条件が許すならば、あなたは何のMongoDBワーキングメカニズムに深く行くを開始することができます。

  1. Redisの/のMemcached:

上述した第2段階、より詳細なアプリケーションと学習に基づい。Memcachedのは、ソースコードを読むことが推奨され、特に複雑ではない、特に、メモリ管理、深い理解を容易にするため、Redisの部分、アプリケーションは、より複雑なデータ構造を実行することができる(確実にするためにリーダーボードソート処理/トランザクション処理を行うZSET高可用性アーキテクチャとRedisのアプリケーションクラスタを設計するために、学習や他のアプリケーションでより複雑AOF同期メカニズム;;)クラスアクションにおける原子スパイククラスのシーンのアプリケーションを使用する提案が第二段階では、ソースのRedisの深さを知ることができます知識の蓄積を約調べるためにイベント管理、メモリ管理、内部データ構造、コアの完全な研究を含める読むことができる特定のコアに適用することができます。興味が許すならば、それは非常に専門的なユーザーRedisのアスペクトになることができます。

  1. PHP:

2段目の一番上にある基本的なコア技術として、我々、より詳細な研究と応用の必要性。アプリケーションのための上記のコードベースから、我々はPHPのスキルのほとんどを理解するために、PHP開発者の95%で発生した問題を解決することができ、PHPフレームワークのほとんどはすぐに日に立ち上げ、実行するための、および優先順位様々な主流のPHPフレームワークのためにプロジェクト開発における欠点は、迅速かつ容易に技術選択を行うことができます;構成で、第二段階は、従来の知識に加えてだろう、それはより多くの副ビジネス・コンフィギュレーション・オプションの一部(PHPのauto_prepend_file / auto_append_fileでインクルード)を理解し、複雑高度な設定の数の拡張子を含みます(例えばmemcachedの拡張構成memcache.hash_strategy、APC拡張構成apc.mmap_file_mask / apc.slam_defense / apc.file_update_protectionなど)と原則; PHP-FPMを含むより良い理解のために、PHP機構、作業装置(例えばPHP-FPMプロセスの計算および原理の数以下機の異なる構成におけるオープン)、Zendのエンジン用(VM / GC /ストリーム処理)と基本的な知識を持っている、基本的なPHPのカーネルソースを読み取る(または関連記事を読んで)、内部PHP機構コアデータ構造(基本型/配列/オブジェクト)のほとんどは、知ることがあり実現します コアインフラストラクチャ(zvalを/ハッシュテーブル/ GC)の学習の深い理解を持っているために、基本的なPHPの拡張機能の開発を行うことができ、上級知識開発し、いくつかの拡張機能を理解する(MINIT / RINIT、など)、PHPのapacheの/ nginxの異なる通信の相互作用に精通しています詳細(mod_phpを/ FastCGIは); PHPエクステンションの開発に加えて、開発者は、PHPを理解するために、より低いレベルから、Zendの拡張を学習検討することができます。

  1. C / C ++:

上記の第二段階に基づき、中小C / C ++システムの開発を完了することができ、C / C ++言語についてより深い学習を持つように、基本的なCの基本的な第二段階に加えて/ C ++の構文とデータ構造も可能特定の作業のニーズを容易にするために、(Bツリー/ RB-ツリー/ skiplist / LSM-ツリー/トライ木、等)は、いくつかの特殊なデータ構造を学び、マルチプロセス、マルチスレッドプログラミングに精通しているシステムプログラムに、以下の多工程学びます複数のプロセス間のほとんどの通信は、通信(共有メモリ/セマフォ/パイプ、等)を選択する柔軟性は、マルチスレッドプログラミングは良い解決策は、競合をロックし、マルチスレッド・プログラムのデバッグを開発することができ、同時にネットワークプログラミングは、原則と相違非同期ネットワークIOモデル(選択/ポーリング/ファイルディスクリプタ/ IOCP、等)に精通しているマルチプロセスモデル/マルチスレッドモデル/非同期ネットワークIOモデルの違いや選択を、理解、に精通しており、共通の非同期に精通していますフレームワーク(ACE / ICE /libev/libevent/libuv/Boost.ASIO、など)と使用、あなたはまた、(例えばmuduoなど)、独自のライブラリを開発するために、国内のレジャーの数を見ることができる場合 アーキテクチャ(リーダーフォロー/マスターワーカーなど)に設計された高同時実行プログラムできると同時に、印刷、高い同時実行、フロントおよび通信プロトコルの後端部を記録し、バックエンドサーバーのメモリ管理ほとんどのC / C ++開発(問題を理解し、サービスの監視アウトオンラインプログラムのコアは、問題を迅速に解決するためにトラックを追跡した後、開発するGCCコンパイラやGDBデバッガでもっと会話することができ;;)、各バックエンドサービスのRPC通信の問題は、(構造体/ HTTP / thirft /いるProtobuf、など)を知っている共通モジュールの開発、あなたが蓄積したり開発し、いくつかの共通のツールやライブラリを(非同期ネットワークフレームワークとして、ライブラリ、メモリ・プール、スレッドプールなどをログ)が、アプリケーションの開発は慎重になるかどうか、墓地州チェイスバグすることができます。

  1. フロント:

HTTPプロトコルの深い理解(そのような静的ファイルキャッシュ302の背後にある様々な理由特殊コードおよびプロトコルの詳細なプロトコルを含む、502はリアnginxのは、PHPに連結等である)、アプリケーション統合フレームワークに加えて、先端の態様の遠位面の前jQueryのに似た、独自のフロントエンドフレームワークの一部を開発、などのスキルのJavaテキストエディタの豊富な些細なテストを開発することができ、式のあなたがより深く学ぶことに興味を持っている場合は、フォーム。

  1. 言語学習の他のエリア:

そこは、基本的には関数型プログラミング言語をテストすることができ、スクリプト言語のようなPythonの/ルビーを学ぶことができ、個人的な興味や趣味を参照して、異なる学習プログラム言語のこの段階で試すことが推奨され、PHP / C / C ++言語に基づいて蓄積されています静的言語は、Java / golangを試すことができますように、統計解析を使用して、バックエンドのビジネスの視点を変更するだけでなく、先に述べなければ、R言語を理解するために学ぶことができるのLisp /ハスケル/スカラ座/アーランを試すことはNode.jsのを試すことができますその上でnginxのNginx_Luaととの組み合わせ。例えば、異なる学習言語は主にビジョンを強化し、例えば、プロセス/スレッドだけでなく、軽量コルーチンに加えて、知っているの手段に彼らの相違を解決するために、例えば、下記のクロスマシン通信のシナリオでは、アーランのソリューションは、驚くべき単純です主に強化するビジョン、ない場合にはC / C ++と同様に、類似した効率的なアーラン/ golangなどの利用可能を選択します。

  1. 他の学習プロの方向:

この段階の中に、私たちは学習知識の他の領域の数を検討しますLNMP基本的なスキルに加えてなり、これらは個人の利益と長期目標の方向で、可能です。このようなクラウド・コンピューティング(分散ストレージ、分散コンピューティング、仮想マシン、等)、機械学習(データ・マイニング、パターン認識、統計アプリケーション、パーソナライズされた推薦)、自然言語処理(として選択することができる現状より分野で中国語の単語など)、検索エンジン技術、グラフィックス、画像、音声認識など。背の高い上のこれらの方向に加えて、このようなので、上の高性能システム、モバイル開発(アンドロイド/ IOS)、コンピュータセキュリティ、組み込みシステム、ハードウェアおよびとしてバイアス技術を学ぶことができる多くの場所があります。

  1. システム設計:

第二段階に基づいてシステム設計、アプリケーションが大規模、複雑なシステムでは、より複雑なシステムを設計するスキルと経験を習得することができますが、ラインのほとんどの問題を解決するため同様のブラウザ完了することができます - > CDNを - >負荷分散 - - >アクセスレイヤ - > nginxの+ PHP - >ビジネスキャッシュ - >データベース - > RPC明るい複雑なバックエンドの相互作用(ストレージバックエンド、バックエンドのロジック、アンチチートバックエンドの外部サービス)より>後江紫の複雑なビジネス・エンド、毎日トラフィックのウェブサイトのメンテナンスの何百万、数百に数千万の正常な発達をサポートすることができます。

おすすめ

転載: blog.51cto.com/11623741/2416069