ホームページ バックエンド開発 PHPチュートリアル [転送] シニア PHP エンジニアが直面する成長のボトルネック

[転送] シニア PHP エンジニアが直面する成長のボトルネック

Jun 13, 2016 pm 01:02 PM
javascript memcache php web

【再投稿】PHPエンジニアが直面する成長のボトルネック
Web 開発で最も広く使用されている言語の 1 つとして、PHP には多くのファンがいます。では、あなたは優秀なプログラマーですが、自己研鑽をしながら、さまざまな課題に直面することを考えたことはありますか?開発を改善するために自分自身のボトルネックを突破できますか?
PHP エンジニアは成長のボトルネックに直面しています

まず明確にしておきますここでいう PHP エンジニアとは、主に Web 開発に PHP を使用するエンジニアを指します。システムはその言語で動作せずに動作します。私は 3 ~ 4 年の実務経験があり、通常の Web システム (数百万アクセス、1,000 レベル未満のデータ、またはビジネス ロジックが特に複雑ではないもの) を問題なく開発できます。 しかし、彼らには次の欠点があります:

引用

◆PHP 以外の他の言語は使用しないでください。シェル スクリプトをクリックしても構いません。

◆PHPの理解度が低い(ライブラリを除いてPHPマニュアルをあまり読んだことがない)。

◆知識ベースは比較的狭いです (需要に直面して、PHP と mysql を使用する以外のソリューションを知りません)。

◆PHPのコードはプロセス指向が中心で、オブジェクト指向の実装は複雑すぎてわかりにくいと思います。

これらの PHPer は、高パフォーマンス、高同時処理、大量のデータを必要とするプロジェクト、またはビジネス ロジックが比較的複雑である (システムは複数の分野でビジネス上の問題を解決する必要がある) プロジェクトに遭遇したときにアイデアが不足しています。 )。彼らは問題の本質を分析することができず、技術的な判断力も乏しいため、問題に対する一時的な解決策をすぐに見つけることができますが、多くの場合、継続的な一時的な解決策の中でシステムとそれ自体が段階的に崩壊します。では、どうすれば自分を向上させることができるでしょうか?

より高い課題はどこにありますか?

私自身の経験に基づいて、誰もが始めることができる具体的な課題をいくつか挙げます。と知覚的に理解します。

高性能システムの課題はどこにありますか?

引用

◆Web サーバーは fast-cgi モードを使用する必要がありますか? ;

◆リバース プロキシ サービスを使用しますか? フル メモリ キャッシュまたはハード ディスク キャッシュを選択しますか?

◆ 負荷分散はアプリケーション層またはネットワークに基づいていますか?高い信頼性を確保するには?

◆最適化ツールを使用した後のパフォーマンスはどうですか? C で拡張機能を記述する必要がありますか?

◆ユーザーのアクセスの特徴は、読み取りと書き込みのどちらが多いですか?

◆データはどのように保存されますか?データが増えるとアクセス速度はどう変化するのか?

◆キャッシュをどう使うか?無効化をどう考えるか?データの整合性をどう確保するか?

高複雑性の課題はどこにあるのか?システム?

対応するフィールドは 1 つですか? 複数ですか?
◆業務を合理的に抽象化し、少ないコストで業務ルールの変更を実現できますか?

◆データの整合性、セキュリティは保証できますか?

◆オブジェクト指向の分析手法と設計手法をマスターしましたか


ここに挙げた質問に肯定的に答えることができれば、それが示されますテクノロジーに熟練していること 基本的には建築家になれる。まだ答えられない場合は、次の方向に強化する必要があります。

ボトルネックを改善して突破するにはどうすればよいですか? まだ答えられません。


引用

◆使用するテクノロジーの背後にある原理と動作メカニズムを分析します。これにより、技術的な判断力が向上し、技術ソリューションの選択の正確性が向上します。
◆大学時代に重要な知識、オペレーティング システムの原理を学ぶ、データ構造とアルゴリズム。以前は試験のために勉強していましたが、今は自分で勉強する必要があり、その理由を自分自身に知らせる必要があることを知ってください;

◆大学ですでに学習した C 言語をもう一度学習し始めます。これは、PHP 拡張機能を作成する必要があるためだけでなく、C アプリケーションにはパフォーマンス、メモリ制御、変数のライフサイクル、データ構造、およびアルゴリズムを常に考慮する環境があるためでもあります。オブジェクト指向の分析と設計を学ぶことは、複雑な問題を解決するための効果的な方法です。抽象化を学びましょう。それが複雑な問題を解決する唯一の方法です。

どうやって効率的に勉強するかは大きな問題です。 「アーキテクチャ中心、ユースケース駆動、反復型開発」、この考え方を借用すると、効果的な学習方法は次のように表現できます。原理、モデル、メカニズムを中心とした、タスク駆動型の反復学習です。少し抽象的ですが、学習方法を説明するために例を挙げてみましょう。

目的: 処理パフォーマンスを向上させる方法を学びます。

反復可能タスク: IP で場所を検索します。これは Web アプリケーションでは一般的なタスクであり、IP データベースには約 100,000 行のレコードが含まれています。

1回目のイテレーション:パフォーマンスを考慮せずに関数を実装する(PHPで実装)

KEY(IP)で領域を直接検索することができないため、データに直接配置できるまたは、連想配列などの単純なメソッドでは機能しません。まずデータを並べ替えてから検索するという考え方です。

Quote

◆順序付けされたデータの場合、IP で検索する方法は二分検索が最も高速です。

◆ソートはどうするか もちろんライブラリ関数sortを使うこともできますが、学習中なのでクイックソートを自分で実装してください。

学習目標: 並べ替えアルゴリズム、検索アルゴリズム

PHPer はデータ構造とアルゴリズムの基礎が不十分です。私は通常、この分野のタスクを担当しません。自分で勉強しているので、この分野の知識はあまりありません。ただし、プログラミングによって解決される問題は、最終的にはデータ構造と、そのデータ構造上で動作するアルゴリズムに帰着します。データ構造のアルゴリズムが常に頭の中にあれば、問題に遭遇したときにその内部構造が明確に理解でき、解決策も自然に見えてきます。

2 番目の反復: データのロードと並べ替えを最適化する

最初のステップを実行すると、データを毎回ロードして並べ替える必要があり、多すぎるため、基本的に使用できません。時間がかかる。 解決策は、データを一度ロードして並べ替えて、各 PHP プロセスがアクセスできる場所に配置することです。それを Memcache に置くのは誰にとっても簡単な問題です。実際、memcache にはより多くのネットワーク操作も含まれるため、共有メモリ (EA およびその他のアクセラレータによってサポートされている) に配置する方が高速な方法です。 データは全体として共有メモリに配置されますか? それともブロックごとに配置されますか? パフォーマンスをテストする方法 (xdebug) については、次のような問題が考えられます。

学習目標: PHP のパフォーマンスに対する PHP 実装構造の影響を検出、特定、最適化する方法。

3 番目の反復: PHP 拡張機能の作成

パフォーマンスはまだ向上せず、C/C++ の世界に入らなければなりませんが、これからは PHPer であるだけでなく、もちろん、これはサーバーサイドのオールラウンドエンジニアですが、C/C++ をやったことがない学生にとっては大きな課題です。

学習目標: C/C++ の学習、PHP 拡張機能の作成

学習する必要があるメカニズムと原則を決定する方法 必要な学習タスクをすべて知っていますか?概念がまったくない場合、このテクノロジーの位置づけ、つまりその仕組み (仕組み) とその理由から学ぶ必要がある重要な点をどのように答えられますか?それはできるよ。このテクノロジーの最も一般的なアプリケーションを学習タスクとしてリストし、簡単なものから難しいものまで練習します。

JavaScript を学ぶ必要がある場合、HTML と CSS についてある程度の知覚的な知識が必要です。まず理解すべきことは、JavaScript は Web 分野の動的言語であり、主に Web ページの動的な対話を解決するということです。学ぶべき重要なポイントは次のとおりです。

引用

◆JavaScript と HTML のやり取り(仕組み)

◆動的な特性とはJavaScript は他の動的言語とどう違うのですか? (言語モデル)
完全に独学で学習する場合は、学習する必要があるポイントを見つけます (仕組み、モデル、原理)。実際、マスターするのはそれほど簡単ではありません。指導してくれる経験豊富な人を見つけたり、学習チームを追加したりすると、学習の速度は確かに大幅に向上します。

最後に皆さんに言いたいのは、PHP はシンプルだから使われているということですが、そのシンプルさが私たちの成長を制限するものではありません!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles