皆さんが PHP をより良く学ぶために、今回は主に PHP の学習ルートについて話し、各段階での PHP プログラマーの技術的要件を整理し、自分の状況に応じて学習と成長の目標を設定したいと思います。
PHP 初心者向けの学習ルートと提案
段階的な学習プロセスが必要です。 ここでは、まず、PHP を学習する多くの愛好家と一致する、PHP の学習プロセスを要約します:
(1) に精通しています。 HTML/CSS/JS、Webページの基本要素、完成段階では、簡単なWebページを自分で作成でき、要素の属性にも比較的慣れています
(2)動的言語の概念と動作の仕組みを理解し、基本的な PHP 構文に精通する
(3) PHP と HTML を組み合わせてシンプルな動的ページを完成させる方法を学びます
(4) MySQL に触ってデータベースの設計を開始します
(5) PHP 構文を継続的に統合し、ほとんどの構文に慣れる一般的な PHP 関数の概要を理解して、オブジェクト指向プログラミング、MySQL の最適化、およびいくつかのテンプレートとフレームワークを理解します
(6) 最終的に完全に機能する動的サイトが完成します
初心者は、上記の概要を見て、PHP の学習が非常に簡単であると考えるべきではありません. プログラミングには真剣に考え、継続的に練習することが必要です。 以下にPHPの学習ルートを詳しく説明します。 まず、Web サイトは Web ページで構成されています。つまり、Web サイトを完成させたい場合は、まず静的な Web ページを作成する技術を習得することが、Web サイトの開発を学ぶための前提条件となります。 したがって、将来Webサイトを作成するための基礎を築くためにHTMLを学ぶ必要があります。 HTML の学習は学びながら行う必要があります。HTML の各要素がどのような影響を与えるかを理解した後でのみ、深く覚えることができます。ページにアクセスしたら、動的言語を理解し始めます。コードは直接出力されず、HTML パーサーを通過する必要があるため、多くの人は非常に混乱するかもしれません。 PHP も PHP パーサーを使用する必要があります。これは、HTML を学習するのと同じです。パーサーを機能させたい場合は、その専用の構文構造を使用する必要があります
他の言語を学習したことがある場合は、PHP を学習できて幸運だと感じるはずです。この段階では、PHP はまだ比較的単純であることがわかります。これで、PHP に 1 プラス 1 を計算させてブラウザに出力できるようになります。 これは小さなコードですが、プログラミングへの大きな前進です。 しかし、今はまだ新人です
次に、PHP の黄金のパートナーとも言えるデータベースを学習する必要があります。データベースの概念を理解したら、次のことを試してください。 PHP 経由でデータベースに接続すると、PHP を使用してデータを正常に挿入、削除、更新できるようになります
この時点では、次のような状態になっている可能性があります: HTML をご存知ですか?はい、テーブル レイアウトを使用して複数の Web ページをコンパイルできます。 PHPをご存知ですか?はい、1+1の演算を関数に書いて呼び出します! MySQLをご存知ですか?はい、データベースにデータを挿入したり削除したりできます。
さて、次は何をすればいいでしょうか?小さなゲストブックを作ってみる これも初心者にはハードルが高いです。 しばらくして、ようやくフォームデータをデータベースに挿入して表示することができるようになり、プログラムのプロトタイプが誕生したと言えます。 ただし、誰かの編集フォーラムや CMS の開発を参照することはできます。いつ作成できますか?心配しないで、知識を統合し、PHP と MySQL 開発の本質を理解してください。それから、自分が書いたゲストブックを振り返ってください。それが本当に自分で書いたものなのかと疑問に思うかもしれません。この時点で、作成したゲストブックを改善することができます。 できればゲストブックに登録機能やページング機能も欲しいです
これは学習としてカウントされますか?いや、いや、まだ OOP に触れてないんですよね?テンプレートやフレームワークについてはどうですか?まだまだ学び続けなければなりません! PHP フレームワークは、Web アプリケーションを構築するための基本的なフレームワークを提供するため、PHP で Web アプリケーションを作成するプロセスが簡素化されます。 開発時間を節約し、より安定したアプリケーションを構築するのに役立ちます。 したがって、PHP フレームワークは時間を節約し、コードを強化するために使用できるツールです。 初めて PHP フレームワークを選択する場合は、いくつかのフレームワークを試してみることをお勧めします。たとえば、Zend フレームワークは、その多様な機能と広範なサポートにより、長い間人気があります。システム。 そして、c++akePHP は Zend よりも後の PHP フレームワークであり、対応するサポート システムは比較的小規模ですが、より便利で使いやすいです
オブジェクト指向とフレームワークを理解した後は、XML に触れる必要があります。簡単に言うと、必ずすべてを学んだことに気づくことはありません。学習に終わりはありません。何かを学ぶとき、どれだけ多くのスキルを持っていても、努力がなければ無駄になってしまいます。 保証できることの 1 つは、PHP を学べば、間違いなく他の言語も早く習得できるということです。逆も同様で、以前に他の言語を学んだことがあれば、間違いなく PHP を早く習得できるということです
他の人の成功したコードからさらに学ぶことは間違いなく有益です。そのため、時間をかけて洗練されてきた古典的なコードを参照することが、進歩するための最良の方法です。 さらに、テクノロジーを学習するときに困難に遭遇したり混乱したりする可能性があることを強調しておく必要があります。PHP を半分学習したところで、もう一度 C# について考え始めるかもしれません。あるいは、現時点では Java が非常に優れていると言われるかもしれません。波打つのではなく、粘り強く、徹底的に学びましょう。
段階的な学習プロセスについて説明します:
最初の段階: 基本段階 (基本的な PHP プログラマー)
焦点: LNMP に習熟する (中心となるのはインストールと構成の基本操作です)
目標: 完了できるようになる基本的な LNMP システムのインストール、簡単な構成とメンテナンス、簡単なシステムの基本的な PHP 開発を行うことができ、中規模の PHP システムでの特定の PHP 機能モジュールの開発をサポートできます。
時間: この段階を完了するまでにかかる時間は人によって異なります。成長が早く半年で終わる人もいれば、2、3年で成長が遅い人もいます。
1.Linux
基本的なコマンド、操作、起動、基本的なサービス設定 (rpm インストール ファイル、さまざまなサービス設定などを含む); 簡単なシェル スクリプトや awk/sed スクリプト コマンドなどを記述できます。
2.Nginx
nginx+php をインストールして構成できるようになり、基本的な nginx コア構成オプションを理解し、server/fastcgi_pass/access_log などの基本構成を理解できるようになります。目標は、nginx+php_fpm をスムーズに動作させることです。
3. MySQL を自分で構築し、基本的な mysql 設定オプションを知り、InnoDB と MyISAM の 2 つのエンジンの異なる設定オプションを知ります。 2 つのエンジンの違い; MySQL データベースを純粋に手動でコンパイルおよび構築でき、通常かつ安定して実行できるようにエンコードを設定できます。主な目的は、実行可能な MySQL データベースを構築できることです。
4.PHP
配列、文字列、データベース、XML、Socket、GD/ImageMgk画像処理などの基本構文; MySQL操作にリンクされたさまざまなAPI (mysql/mysqli/PDO)に精通しており、さまざまなコーディングを理解している問題の解決策、一般的に使用される PHP フレームワーク (ThinkPHP、Zendframework、Yii、Yaf など) を理解し、基本的な MVC 操作メカニズムとその理由を理解し、さまざまな PHP フレームワークの違いについて少し理解します。 MVCフレームワークを学びます。開発プロジェクトのファイル ディレクトリ構成を理解し、基本的な優れたコード構造とスタイルを備え、小規模システムの開発と中規模システムの特定のモジュールの開発を完了できる。
5. フロントエンド
時間が許せば、HTML/CSS/JS およびその他の関連知識を適切に学び、Web 標準、div+CSS の Web/WAP ページ モード、HTML5 と HTML4 の違いを知ることができます。いくつかの基本を理解する フロントエンドは JS フレームワーク (jQuery など) のみを使用します。 基本的な JavaScript プログラミングの知識を理解します (この項目は必須ではありません。時間があれば少し学習しても問題ありません)。強い個人的な関心がない限り、焦点としては推奨されません)。
6. システム設計
簡単なデータベース設計を含む小規模システムの基本設計を完了でき、ブラウザ -> Nginx+PHP -> データベース アーキテクチャの設計と開発作業をサポートできる。毎日数十のプロジェクト 数万から数百万のトラフィックがある Web サイトの開発と保守
第 2 段階: 改善段階 (中級 PHP プログラマー)
焦点: LNMP スキルを向上させ、LNMP をより包括的かつ熟練的に適用できるようになります。
目標: いつでもどこでも LNMP 環境をセットアップし、日常的な構成を迅速に完了できるようになり、発生する開発およびオンライン環境の問題のほとんどを追跡して解決できるようになり、メディアのアーキテクチャと開発作業を独自に開始できるようになります。 - サイズのシステム; 大規模システムのタスクを実行できる 中規模のモジュールの開発作業。
1. Linux
最初の段階に基づいて、シェル スクリプトを使用して多くの自動化された作業をスムーズに実行でき、多くのテキスト処理とデータ統計を完了できます。基本的に、特別ではないほとんどの Linux プログラム (MongoDB/Redis/Sphinx/Luncene/SVN などのさまざまなライブラリ、パッケージ、サードパーティの依存関係などを含む) をインストールでき、基本的な Linux サービスを理解し、チェック方法を知っている。 Linux メトリック データのパフォーマンス、Linux での基本的な問題追跡の知識など。
2. Nginx
マルチコア構成、イベント、proxy_pass、sendfile/tcp_* 構成を含む、より複雑な Nginx 構成を理解し、タイムアウトやその他の関連する構成とパフォーマンスへの影響を理解します。 Web サーバー以外に、プロキシ サーバー、リバース静的サーバーなどの設定も行うことができます。基本的な nginx 設定の調整方法を知っており、nginx の拡張機能を nginx にコンパイルする方法を知っています (マスター/ワーカー)。メカニズム、epoll)、知る nginx のパフォーマンスが Apache のパフォーマンスよりも優れている理由に関する知識。
3. MySQL/MongoDB
第 1 段階に基づいて、MySQL 開発に関して、通常の SQL 最適化 (group by/order by/rand 最適化など) を含む多くのヒントを習得し、MySQL を構築できるようになります。また、innodb/myisam のパフォーマンスに影響を与える設定オプション (key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size /innodb_flush_log_at_trx_commit など) も知っており、これらを設定するための適切な値も知っています。オプション、mysql マスター/スレーブ同期環境のセットアップ方法など、いくつかの特別な設定オプションについても理解し、slow_log/explain などの MySQL のパフォーマンス追跡についても理解しています。インデックスの作成と処理、原理に関して基本的な MySQL アーキテクチャ (サーバー + ストレージ エンジン) を理解し、基本的な InnoDB/MyISAM インデックス ストレージ構造と相違点 (クラスター化インデックス、B ツリー) を理解している。ほとんどの MySQL 例外の解決策を理解している (または解決策がどこにあるのかを知っている)。状況が許せば、NoSQL の代表である MongoDB データベースについて学び、MySQL との違いを比較し、適切なアプリケーション シナリオで MongoDB を安全かつ慎重に使用し、PHP と MongoDB の基本的な組み合わせ開発を理解することをお勧めします。 。
4. Redis/Memcached
キャッシュ処理はほとんどの中規模システムに関係するため、基本的なキャッシュを理解し、Redis/Memcached を個別にインストールできるようにする必要があります。 Memcahed のいくつかの基本的な機能と制限 (最大値など) を理解する、PHP とその使用法を組み合わせる方法を理解する、Redis の基本的な動作原理と使用法を理解する、通常のデータ型を理解する、どのシナリオでどの型が使用されるかを理解する、 Redis トランザクションなどを理解する原理部分では、Memcached のメモリ構造 (スラブ機構) を一般的に理解できます。Redis は、一般的なデータ型 (SDS/リンクリスト/SkipList/HashTable) などの基盤となる実装ストレージ構造を理解します。 Redis のトランザクション、RDB、AOF、その他のメカニズムについて詳しく学ぶことができます。
5. PHP
インストールと構成に関しては、第 1 段階の機能に加えて、PHP のコンパイルおよびインストールされた構成とさまざまなサードパーティ拡張機能を自由にインストールでき、php の構成オプションと意味のほとんどを理解できます。 -fpm (パフォーマンスに影響する max_requests/max_children /request_terminate_timeout 構成など)、mod_php/fastcgi の違いを理解している。PHP オブジェクトの深い理解など、より詳細な PHP を含む、PHP のさまざまな基本テクノロジに習熟している。 - 指向/SPL/文法レベル リフレクションなどの特殊機能をフレームワークの観点から少なくとも 1 つの従来の PHP MVC フレームワークのコードを読み、基本的な PHP フレームワークの内部実装メカニズムと設計思想を理解していること。 PHP 開発では従来のデザイン パターンを使用します (抽象ファクトリ/シングル ケース/オブザーバー/コマンド チェーン/ストラテジー/アダプターなどのパターン)。開発を完全に自由化するために独自の PHP MVC フレームワークを開発し、MVC パターンを深く理解することをお勧めします。また、ビジネス プロジェクトを開発できるようになります。 PHP での迅速なアップグレードが可能です。 PHP のさまざまなコード最適化方法に精通しており、ほとんどの PHP セキュリティ問題の解決に精通しています。 基本的な PHP 実行メカニズムの原則 (Zend エンジン/拡張機能の基本動作メカニズム) に精通しています。
6. C/C++
特定の C/C++ 言語に手を出し始め、基本的な C/C++ コードを記述できるようになり、基本的な C/C++ 構文 (ポインター、配列操作、文字列、通常の標準 API) に慣れる) とデータ構造 (リンク リスト、ツリー、ハッシュ、キュー) にある程度の知識があり、Linux での C 言語開発の概念を基本的に理解しており、簡単な Makefile ファイルを作成でき、簡単な GCC/ を使用できる。簡単なデバッグ作業をコンパイルするための GDB プログラム。基本的なネットワーク プログラミングについての一般的な理解がある。 (この項目は、より高いレベルへの基礎を築くためのものです)。
7. フロントエンド
最初の段階に基づいて、基本的な HTTP プロトコル (プロトコル コード 200/300/400/500、基本的な HTTP インタラクティブ ヘッダー) を理解します。条件が許せば、もう少し詳しく記述できます。エレガントな HTML の詳細 +CSS+JavaScript、または条件が許せばフロントエンド フレームワーク (jQuery/YUI/ExtJS/RequireJS/BootStrap など) を使用することもでき、クロージャ メカニズムなどの JavaScript プログラミングを詳細に学習できます。さらに詳しく調べるには、jQuery のソース コードを読んでください。 (フロントエンドに興味がない限り、この項目は重要な調査ではありません)。
8. システム設計
ほとんどの中規模システム向けの Web サイトのアーキテクチャ、データベース、および基本的な PHP フレームワークの選択を行うことができる。次のようなタスクを実行できる。 ; CDN (Squid) -> Nginx+ PHP -> データベース構造の Web サイトの基本的な設計、開発、メンテナンス、毎日数百万から数千万のトラフィックをサポートします。
第 3 段階: 上級段階 (上級 PHP プログラマー) 重要なポイント: 基本的な LNMP プログラムに加えて、特定の方向または分野についての深い学習も可能です。 (深さ次元開発) 目標: 基本的な PHP ビジネス開発を完了できることに加えて、ほとんどの詳細で複雑な技術的問題も解決でき、中規模および大規模なシステム設計と開発を独立して設計して完了できるこの分野では、技術的な方向性が比較的専門的です。 (例えば、MySQL、Nginx、PHP、Redisなど、あらゆる方向の詳細な調査)1. Linux第 2 段階の機能に加えて、Linux での通常の操作、パフォーマンスの監視と追跡に加えて、多くの高度で複雑なコマンドを使用して作業を完了することもできます (watch/tcpdump/starce/ldd/ar など)。シェル スクリプトに関しては、バックアップ、自動処理、モニタリングなどの多くのシェル タスクを完了するのに役立つ比較的複雑なシェル スクリプト (500 行以上) をすでに作成できます。私は awk/sed/ などのアプリケーションに習熟しました。 perl を使用し、複雑な形式のテキスト統計分析を自由に操作および制御できる。Linux の内部メカニズム、カーネル モジュールのロード、起動時のエラー処理などをある程度理解している。 NFS、ディスク管理など
2. Nginx
第 2 段階に基づいて、私は Nginx を非常に上手に操作できるようになり、次のような Nginx 上でより詳細な運用および保守作業を実行できるようになりました。個人の興味に応じて、モニタリング、パフォーマンスの最適化、複雑な問題の処理など、多くの面で、主に特定のソース コードを読むことから始めて、Nginx の動作原理を徹底的に研究することに重点を置くことを検討できます。マスター/ワーカーの動作メカニズム、Nginx の内部イベント処理、メモリ管理などを同時に学ぶことができ、同時に独自のプライベート拡張機能のいくつかをカスタマイズすることもできます。より良いモデルを組み合わせて適用できるかどうかを確認するには、Nginx + Lua をある程度理解する必要があります。この段階での要件は、Nginx の原理を深く理解することであり、その方向の深い専門家になることを検討できます。 Nginxプロフェッショナルの。
3. MySQL/MongoDB
MySQL アプリケーションに関しては、前述の基本的な SQL 最適化に加えて、大規模なバッチのインポートとエクスポートなどのいくつかの複雑な操作も完了できます。インストールや設定に加えて、テーブル構造の変更やインデックス フィールドの追加や削除などのリスクの高い操作や、さまざまな問題のトレースなど、より複雑な MySQL の問題も処理できます。マスター/スレーブ同期の遅延問題の解決、コンピューター ルーム間のデータ同期ソリューション、MySQL 高可用性アーキテクチャなどがすべて関係しており、MySQL アプリケーション レベルに精通しており、トランザクション メカニズム (分離) などの MySQL の主要なテクノロジーに精通しています。レベル、ロックなど)、トリガー、パーティション、その他のテクノロジーの一定の理解と応用、MySQL のパフォーマンスに関する知識、側面としては、ディスクの最適化(SSD への SAS の移行)、サーバーの最適化(メモリ、サーバー自体の構成)があります。 、第 2 段階 (innodb_log_buffer_size/back_log /table_open_cache/thread_cache_size/innodb_lock_wait_timeout など) に加えて他のコア パフォーマンス最適化オプション、接続プール ソフトウェア選択アプリケーション、show * (show status/show) などの操作ステートメントを深く理解しているプロファイル)、ほとんどのパフォーマンス問題の追跡を完了でき、災害復旧と復元、Binlog、ホットおよびコールド バックアップ、マルチ IDC バックアップなどの深い理解が得られます。 MySQL の動作メカニズムのソース コードの一部を読み始めたり、マスターとスレーブの同期 (レプリケーション) テクノロジのソース コードを学習したり、特定のストレージ エンジン (MyISAM/Innodb/TokuDB) について学習したりするなど、MySQL の原則について理解します。 ) およびその他のソース コードの学習と理解。条件が許せば、CSV エンジンを参照して独自のシンプルなストレージ エンジンを開発し、このプロセス中にデータを保存し、MySQL についての理解を深めることもできます。 DBA の方向での開発を検討してください。 MongoDB レベルでは、たとえば、書き込みを減らし読み取りを増やす場合に MongoDB のオンライン適用を開始することや、オンライン データ分析と処理操作を実行することを検討できます。特定のシナリオは作業に基づいていますが、中心となるのは次のとおりです。 NoSQL とは異なるシナリオのアプリケーションについて、条件や関心が許せば、MongoDB の動作メカニズムについてさらに詳しく学び始めることができます。
4. Redis/Memcached
第 2 段階に基づいて、より詳細な適用と学習を実現できます。 Memcached は特に複雑ではないため、ソース コード、特にメモリ管理部分を読んで Redis 部分をより深く理解することをお勧めします。より複雑なデータ構造のアプリケーションを実行できます (ランキング操作には zset が使用されます)。フラッシュ セール シナリオ アプリケーションで確実に Atomicity が使用されるようにするための /トランザクション処理)、これには主に、aof などの同期メカニズムのアプリケーションの学習と、高可用性の Redis アプリケーション アーキテクチャとクラスターの設計が含まれます。蓄積された知識は、特にコアイベント管理、メモリ管理、内部コアデータ構造などについて読むと完全に理解できます。興味があれば、Redis の非常にプロフェッショナルなユーザーになることができます。
5.PHP
基礎的なコアスキルとして、第2段階を踏まえたより深い学習と応用が必要です。基本的なコードの適用に関しては、PHP 開発で遭遇する問題の 95% を解決でき、ほとんどの PHP テクニックを理解できます。また、ほとんどの PHP フレームワークを 1 日以内にすぐに使い始めることができ、各主流の PHP フレームワークの利点を理解できます。プロジェクト開発中に、構成に関して迅速かつ便利にテクノロジを選択できます。第 2 段階で学んだ知識に加えて、複雑な高度な構成など、より不明瞭な構成オプション (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/stream 処理) に基本的な知識があること、基本的な PHP カーネル ソース コードを読んでいること (または関連記事を読んでいること)、 PHP の内部メカニズムを理解している。 ほとんどのコア データ構造 (基本型/配列/オブジェクト) の実装を理解し、コア インフラストラクチャ (zval/hashtable/gc) を深く理解している。基本的な PHP 拡張機能開発を実行でき、拡張機能開発 (minit/rinit など) の中級および高度な知識を理解し、php と apache/nginx (mod_php/fastcgi) 間のさまざまな通信および対話方法の詳細に精通している; PHP 拡張機能の開発に加えて、PHP をより低いレベルから理解するために Zend 拡張機能の開発を学習することを検討できます。
6. C/C++
第 2 段階に基づいて、C/C++ 言語をより深く理解し、小規模および中規模の C/C++ システムの開発を完了できるようになります。第 2 段階の基本的な C の /C++ 構文とデータ構造に加えて、特別なニーズに対応するためにいくつかの特別なデータ構造 (b-tree/rb-tree/skiplist/lsm-tree/trie-tree など) を学ぶこともできます。システムプログラミングに関しては、マルチプロセス、マルチスレッドプログラミングに精通しており、マルチプロセス環境下での通信方法(共有メモリ)を柔軟に選択できる。 /semaphore/pipeline など); マルチスレッド プログラミングは、ロック競合の問題をうまく解決でき、同時にマルチスレッド プログラミングを実行できます。私はネットワーク プログラミングに精通しています。マルチプロセス モデル/マルチスレッド モデル/非同期ネットワーク IO モデルの違いと選択について理解しており、さまざまな非同期ネットワーク IO モデル (select/poll/epoll/iocp など) の原理と違いに精通しており、一般的な非同期フレームワーク (ACE/ICE/libev/libevent/libuv/Boost.ASIO など) とその使用法について説明します。時間があれば、国内で開発されたライブラリ (Muduo など) も同時に参照できます。高い同時実行性のプログラム アーキテクチャ (リーダー フォロー/マスター ワーカーなど) を適切に設計できます。C/C++ バックエンド サーバー開発の問題のほとんどを理解しています (メモリ管理、ログ出力、高い同時実行性、フロントエンド)。バックエンド通信プロトコル、サービス監視など)、各バックエンド サービスの RPC 通信の問題(struct/http/thirft/protobuf など)を理解し、コンパイルおよびデバッグ プログラムを開発するために GCC と GDB をよりよく使用できるようになります。オンライン プログラムがコア化された後、一般的なモジュール開発に関して問題を迅速にトレース、追跡、解決できるようになります。いくつかの一般的なツールやライブラリ (非同期ネットワーク フレームワーク、ログ ライブラリ、メモリ プール、スレッド プールなど) を蓄積または開発できます。 、など)、バグを追いかけることを避けるために、開発後にそれらを適用するかどうかに注意する必要があります。
7. フロントエンド
HTTP プロトコルについての深い理解 (各詳細なプロトコル、特殊なプロトコル コードとその背後にある理由を含む。たとえば、302 個の静的ファイルがキャッシュされている、502 は nginx の背後にある PHP がダウンしていることを意味するなど) .); 以前のさまざまなフロントエンドの側面のフレームワーク アプリケーション統合機能に加えて、フロントエンドの側面についてさらに詳しく知りたい場合は、jQuery などのフロントエンド フレームワークを自分で開発したり、リッチ テキスト エディターを開発したりできます。これは、JavaScript スキルを試す比較的簡単なテストです。
8. 他の分野の言語学習
基本的な PHP/C/C++ 言語の基礎を積み上げます。個人の興味や趣味に応じて、現段階でさまざまなプログラミング言語を学習することをお勧めします。たとえば、スクリプト言語としては Python/Ruby を、関数型プログラミング言語としては Lisp/Haskell/Scala/Erlang を、静的言語としては Java/Golang を、データ統計分析を行うには R 言語を試すことができます。 - ビジネスを別の観点から終了するには、Node.js や前述の Nginx_Lua と Nginx の組み合わせなどを試すことができます。さまざまな言語を学ぶことは、主に自分自身のビジョンと問題解決方法の違いを改善することです。たとえば、クロスマシン通信シナリオには、プロセス/スレッドに加えて軽量のコルーチンもあることを理解するでしょう。 Erlang のソリューションは驚くほどシンプルです。たとえば、C/C++ を選択したくない場合は、主に視野を広げるために、同様の効率的な Erlang/Golang も利用できます。
9. 他の専門的な方向で勉強する
この段階では、基本的な LNMP スキルに加えて、他の分野の知識を学ぶことも検討します。これらはすべて、個人の興味と長期的な目標に応じて可能です。現在、クラウドコンピューティング(分散ストレージ、分散コンピューティング、仮想マシンなど)、機械学習(データマイニング、パターン認識など、統計への適用、パーソナライズされたレコメンデーション)、自然科学など、選択できる分野は数多くあります。言語処理 (中国語の単語分割など)、検索エンジン技術、グラフィックスと画像、音声認識など。これらの高度な分野に加えて、高性能システム、モバイル開発 (Android/IOS)、コンピュータ セキュリティ、組み込みシステム、ハードウェアなど、エンジニアリングについてさらに学ぶことができる分野も数多くあります。
10. システム設計
システム設計は、第 2 段階に基づいて、比較的複雑な中規模および大規模システムの設計で習得した経験とスキルを適用し、さまざまな複雑なシステムの問題のほとんどをオンラインで解決し、ブラウザと同様に完成させることができます。 -> CDN -> アクセス層 -> ビジネスキャッシュ -> さまざまなバックエンド RPC インタラクション (ストレージバックエンド、アンチチートバックエンド)外部サービス) -> バックエンド Jiangzi のより複雑なビジネス。毎日数千万から数億のトラフィック Web サイトの通常の開発とメンテナンスをサポートできます。
最後に、PHP による開発をより良くするために、PHP のパフォーマンスを最適化するための 10 のヒントを共有します:
1. while ループや for ループの代わりに foreach を使用するようにしてください
2. ループ内で変数を宣言しないでください。特にオブジェクトなどの変数
3. 複数のネストされたループでは、可能であれば、最も長いループを内側の層に配置し、最も短いループを外側の層に配置することで、CPU がループ層を横断する回数を減らし、プログラムのパフォーマンスを最適化します。
4. PHP パフォーマンスの最適化を実現するには、文字列を引用符で囲むには二重引用符ではなく一重引用符を使用します
5. i=i+1 の代わりに i+=1 を使用します。 C/C++ の習慣に準拠しており、非常に効率的です
6. Select SQL ステートメントを最適化し、PHP パフォーマンス最適化の目的を達成するために、可能な場合は挿入操作と更新操作をできるだけ少なく実行します
7. 実行するファイルの数は最小限に抑えますPHPのファイル操作効率は低くありませんが、可能な限り操作を行う
8. PHPの内部関数を可能な限り使用する
9. PHPの内部文字列操作関数を使用できる場合は、正規表現を使用しないでください
10. feofの場合、 fgets、fopen、および file_get_contents は、file メソッドまたは series メソッドの代わりに使用できます。より効率的であるため、file_get_contents を使用してみてください。 ただし、URLファイルを開く際にはfile_get_contentsのPHPバージョンの問題にご注意ください