Maison  >  Article  >  Décrire en détail le chemin de croissance des programmeurs PHP

Décrire en détail le chemin de croissance des programmeurs PHP

阿神
阿神original
2017-03-11 10:33:082878parcourir

Les programmeurs sont une profession relativement lucrative aux yeux de nombreuses personnes, et un grand nombre de personnes entrent dans ce secteur chaque année. Certaines de ces personnes sont spécialisées en informatique, et d'autres sont formées, mais quel que soit le type, de nombreuses personnes ont travaillé. un ou deux ans plus tard, j'ai choisi de changer de carrière. La raison était simple : il n'y avait pas d'évolution. Ce n’est pas que cette industrie ne s’est pas développée, mais que je n’ai aucun moyen de me développer dans cette industrie parce que je n’ai pas de chemin correct. Par conséquent, aujourd'hui, notre site Web php chinois amènera tout le monde à comprendre le chemin de croissance des programmeurs php, qui peut également être considéré comme une version simplifiée du plan de carrière des programmeurs php.

Cet article fait un résumé de base basé sur la technologie dominante actuelle. L'ensemble des paramètres est basé sur l'hypothèse que le programmeur PHP n'a pas de base très solide, ce qui peut mettre les gens mal à l'aise. qu'ils ne représentent qu'une histoire de famille. (Les changements techniques futurs ne sont pas dans le cadre de la discussion)

La première étape : étape de base (programmeur PHP de base)

Points clés : Maîtriser LNMP (le noyau est constitué des opérations de base d'installation et de configuration)

Objectif : Être capable d'effectuer l'installation de base du système LNMP, une configuration et une maintenance simples ; capable de faire du développement PHP de base de systèmes simples ; Capable de prendre en charge le développement d'un certain module de fonction PHP dans un système PHP de taille moyenne.

Temps : Le temps nécessaire pour terminer cette étape varie d'une personne à l'autre. Certains grandissent plus vite qu'une demi-année et d'autres grandissent lentement en deux ou trois ans.

1.Linux :

● Commandes de base, opérations, démarrage, configuration de base du service (y compris les fichiers d'installation RPM, diverses configurations de service, etc.) ; ● Peut écrire des scripts shell simples et des commandes de script awk/sed, etc.

2.Nginx :

Être capable d'installer et de configurer nginx php, connaître les options de configuration de base de nginx et connaître les configurations de base telles que server/fastcgi_pass/access_log. L'objectif est de faire fonctionner nginx php_fpm sans problème.

3.MySQL :

● Je peux construire MySQL par moi-même et connaître les options de configuration de base de MySQL ;

● Connaître la différence entre innodb et myisam, connaître les différentes options de configuration pour les moteurs InnoDB et MyISAM ; connaître les différences fondamentales entre les deux moteurs et les différences entre les choix ci-dessus

● Capable de compiler et de construire une base de données MySQL uniquement à la main et de configurer l'encodage pour qu'il s'exécute normalement et de manière stable ; l'objectif principal est de pouvoir créer une base de données MySQL exécutable.

4.PHP :

● Tableau de syntaxe de base, chaîne, base de données, XML, Socket, traitement d'image GD/ImageMgk, etc. ; ● Familier avec diverses API liées aux opérations MySQL (mysql/mysqli/PDO), et savoir résoudre divers problèmes de codage

● Connaître les frameworks PHP couramment utilisés (ThinkPHP, Zendframework, Yii, Yaf, etc.) ;

● Comprendre le mécanisme de fonctionnement de base de MVC et pourquoi cela est fait, et connaître un peu les différences entre les différents frameworks PHP

● Capacité à apprendre rapidement un framework MVC. Être capable de comprendre l'organisation des répertoires de fichiers dans le projet de développement, avoir une bonne structure et un bon style de code de base, et être capable de terminer le développement de petits systèmes et le développement d'un certain module dans un système de taille moyenne.

5. Front-end :

● Si le temps et les conditions le permettent, vous pouvez correctement apprendre HTML/CSS/JS et d'autres connaissances connexes, connaître les normes Web, le mode page CSS web/wap et connaître la différence entre HTML5 et HTML4 ; ● Comprendre quelques frameworks front-end et JS de base (jQuery et autres

) ; ● Comprendre quelques connaissances de base en programmation JavaScript ; (Cet élément n'est pas obligatoire. Si vous avez le temps, il est normal d'en apprendre un peu, mais il n'est pas recommandé de se concentrer à moins que vous n'ayez un fort intérêt personnel)

6. Conception du système :

Être capable de réaliser la conception de base de petits systèmes, y compris la conception de bases de données simples, et être capable d'effectuer des travaux de base : navigateur->Nginx PHP->architecture de base de données et être capable de prendre en charge le développement de sites Web avec des centaines de milliers de personnes ; des millions de trafic chaque jour Travaux de maintenance

La deuxième étape : étape d'amélioration (programmeurs PHP intermédiaires)

Focus : Améliorer les compétences LNMP, permettant une application plus complète et plus efficace du LNMP.

Cible :

● Capacité à configurer un environnement LNMP à tout moment et en tout lieu et à effectuer rapidement la configuration de routine  ; ● Capable de traquer et de résoudre la plupart des problèmes rencontrés dans les environnements de développement et en ligne

● Capable d'entreprendre de manière indépendante l'architecture et le développement de systèmes de taille moyenne

● Capable d'entreprendre les travaux de développement d'un module de taille moyenne dans un grand système

1.Linux :

● Sur la base de la première étape, vous pouvez utiliser en douceur les scripts Shell pour effectuer de nombreuses tâches automatisées  ; ● awk/sed/perl fonctionne également bien et peut effectuer de nombreux traitements de texte et statistiques de données

● Fondamentalement capable d'installer la plupart des programmes Linux non spéciaux (y compris diverses bibliothèques, packages, dépendances tierces, etc., tels que MongoDB/Redis/Sphinx/Luncene/SVN, etc.) ;

● Comprendre les services Linux de base, savoir comment afficher les données des indicateurs de performances Linux et connaître le suivi de base des problèmes sous Linux, etc.

2.Nginx :

● Sur la base de la première étape, comprendre la configuration Nginx plus complexe ; y compris la configuration multicœur, les événements, le proxypass, la configuration sendfile/tcp*, et connaître la configuration associée et l'impact sur les performances tels que le délai d'attente ; ● Sachez qu'en plus du serveur Web, nginx peut également entreprendre des configurations telles que serveur proxy et serveur statique inversé

; ● Connaître le réglage de base de la configuration nginx, comment configurer les autorisations, compiler une extension nginx vers nginx

 ; ● Connaître les principes de fonctionnement de base de nginx (mécanisme maître/travailleur, epoll) et pourquoi les performances de nginx sont meilleures que les performances d'Apache

3. MySQL/MongoDB :

● Sur la base de la première étape, maîtriser de nombreuses astuces de développement MySQL, notamment l'optimisation SQL régulière (optimisation group by/order by/rand, etc.) ; En plus de pouvoir créer MySQL, vous pouvez également sauvegarder les données MySQL à chaud et à froid. Vous connaissez également les options de configuration qui affectent les performances d'innodb/myisam (telles que key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size/innodb_flush_log_at_trx_commit, etc.), et vous connaissez également les valeurs appropriées pour configurer ces options

; ● Comprenez également certaines options de configuration spéciales, telles que la façon de créer un environnement de synchronisation maître-esclave MySQL et les différences entre binlog_format ; ● Connaître le suivi des performances MySQL, y compris slow_log/explain, etc., et connaître également la création et le traitement d'index de base

 ; ● Principes : Comprendre l'architecture de base de MySQL (moteur de stockage du serveur), connaître la structure de base de stockage des index InnoDB/MyISAM et leurs différences (index clusterisé, B-tree) ; connaître le mécanisme de base de traitement des transactions InnoDB (ou connaître la plupart des solutions d'exceptions MySQL) ; où en trouver un).

● Si les conditions le permettent, il est recommandé de se renseigner sur MongoDB, une base de données représentative de NoSQL, et de comparer les différences avec MySQL. En même temps, vous pouvez utiliser MongoDB en toute sécurité et prudemment dans des scénarios d'application appropriés, et connaître les bases du développement combiné de. PHP et MongoDB.

4.Redis/Memcached :

● La plupart des systèmes de taille moyenne impliqueront certainement la mise en cache, vous devez donc comprendre la mise en cache de base

 ; ● Connaître les similitudes, les différences et les scénarios d'application entre Memcached et Redis, être capable d'installer Redis/Memcached indépendamment, comprendre certaines fonctionnalités et limitations de base de Memcached, comme la valeur maximale, et savoir comment combiner PHP avec leur utilisation ; principes de fonctionnement de base et utilisation de Redis, comprendre les types de données conventionnels, savoir quels types sont utilisés dans quels scénarios, comprendre les transactions Redis, etc.

● Partie principale : vous pouvez avoir une compréhension générale de la structure de la mémoire de Memcached (mécanisme de dalle Redis comprend la structure de stockage d'implémentation sous-jacente des types de données courants (SDS/liste chaînée/SkipList/HashTable), etc., et en passant). , comprenez mieux la transaction de Redis, RDB, AOF et d'autres mécanismes

5.PHP :

. ● En plus des fonctionnalités de première étape, en termes d'installation et de configuration, vous pouvez installer librement les configurations compilées et installées de PHP et de diverses extensions tierces

; ● Comprendre la plupart des options de configuration et des significations de php-fpm (telles que max_requests/max_children/request_terminate_timeout et d'autres configurations qui affectent les performances), et connaître la différence entre mod_php/fastcgi ; ● Déjà maîtrisé diverses technologies de base en PHP, y compris diverses technologies PHP plus approfondies, y compris une compréhension approfondie des fonctionnalités PHP orientées objet/SPL/spéciales au niveau de la syntaxe telles que la réflexion

; ● En termes de frameworks, j'ai lu le code d'au moins un framework PHP MVC conventionnel, et connais le mécanisme d'implémentation interne et les idées de conception du framework PHP de base

; ● En développement PHP, vous maîtrisez l'utilisation de modèles de conception conventionnels pour le développement d'applications (usine abstraite/cas unique/observateur/chaîne de commande/stratégie/adaptateur et autres modèles, il est recommandé de développer votre propre framework PHP MVC pour une libéralisation totale) ; développement. Permettez-vous d'avoir une compréhension approfondie du modèle MVC et permettez-vous également de progresser rapidement dans le développement de projets d'entreprise

; ● Familier avec diverses méthodes d'optimisation de code PHP et familier avec la résolution de la plupart des problèmes de sécurité PHP

● Familier avec le mécanisme d'exécution de base de PHP (moteur Zend/mécanisme de travail de base étendu

6.C/C :

) ; ● Commencer à se familiariser avec un certain langage C/C, être capable d'écrire du code C/C de base et se familiariser avec la syntaxe C/C de base (pointeurs, opérations sur les tableaux, chaînes, API standard classiques) et les structures de données (listes chaînées, arbres, hachages), file d'attente) ont une certaine familiarité

● Avoir une compréhension de base du développement du langage C sous Linux, être capable d'écrire des fichiers makefile simples et être capable d'utiliser des programmes GCC/GDB simples pour compiler des travaux de débogage simples

; ● Avoir une compréhension générale de la programmation réseau de base. (Cet élément est destiné à jeter les bases d'un niveau supérieur)

7. Front-end :

● Sur la base de la première étape, se familiariser avec le protocole HTTP de base (code de protocole 200/300/400/500, en-tête d'interaction HTTP de base

) ;

● Si les conditions le permettent, vous pouvez écrire du JavaScript HTML CSS légèrement plus élégant en profondeur, ou vous pouvez simplement utiliser certains frameworks front-end (jQuery/YUI/ExtJS/RequireJS/BootStrap, etc.) ; ● Si les conditions le permettent, vous pouvez étudier en profondeur la programmation JavaScript, telle que le mécanisme de fermeture et le traitement DOM ; si vous approfondissez, vous pouvez lire le code source de jQuery pour une étude approfondie. (Cet élément n'est pas une étude clé sauf si vous êtes intéressé par le front-end)

8. Conception du système :

● Capable de concevoir l'architecture de sites Web, la base de données, la sélection du framework PHP de base, les tests de performances et le dépannage pour la plupart des systèmes de taille moyenne

; ● Capacité à réaliser la conception, le développement et la maintenance de base de sites Web similaires à : navigateur -> CDN (Squid) -> Cache Nginx -> ● Capable de prendre en charge le développement et la maintenance de sites Web de base avec des millions à des dizaines de millions de trafic chaque jour

La troisième étape : Étape avancée (programmeur PHP senior)

Points clés : En plus du programme de base LNMP, vous pouvez également avoir un apprentissage approfondi dans une certaine direction ou un certain domaine. (Développement de dimension profonde)

Objectif : En plus de compléter le développement commercial de base de PHP, il peut également résoudre les problèmes techniques les plus approfondis et les plus complexes, et peut concevoir et réaliser indépendamment des moyennes et grandes conceptions de systèmes et travaux de développement ; je peux approfondir et approfondir de manière indépendante une certaine direction technique, et je suis relativement professionnel dans ce domaine. (Par exemple, des recherches approfondies dans n'importe quelle direction comme MySQL, Nginx, PHP, Redis, etc.)

1. Linux :

● En plus des capacités de la deuxième étape, en plus des opérations régulières et de la surveillance et du suivi des performances sous Linux, vous pouvez également utiliser de nombreuses commandes avancées et complexes pour terminer le travail (watch/tcpdump/starce/ldd/ar, etc.) ;

● En termes de scripts shell, j'ai pu écrire des scripts shell relativement complexes (plus de 500 lignes) pour aider à réaliser de nombreuses tâches shell, notamment la sauvegarde, le traitement automatisé, la surveillance, etc. ● Je maîtrise des applications telles que awk/sed/perl, et je peux contrôler et traiter des statistiques de texte et analyser des données dans divers formats complexes à volonté

 ; ● Avoir une certaine compréhension des mécanismes internes de Linux, de la gestion de base du chargement des modules du noyau, de la gestion des erreurs de démarrage, etc. ; comprendre également d'autres éléments connexes, tels que NFS, la gestion des disques, etc. ; >2.Nginx :

● Sur la base de la deuxième étape, j'ai pu utiliser Nginx de manière très compétente et effectuer des travaux d'exploitation et de maintenance plus approfondis sur Nginx, tels que la surveillance, l'optimisation des performances, le traitement de problèmes complexes, etc. ; 🎜> ● En fonction de vos intérêts personnels, vous pouvez envisager de vous concentrer sur une étude approfondie du principe de fonctionnement de Nginx, en commençant principalement par la lecture du code source, comme le mécanisme de travail spécifique maître/travailleur, le traitement des événements internes de Nginx, la gestion de la mémoire, etc. ; en même temps, vous pouvez En apprenant le développement des extensions Nginx, vous pouvez personnaliser certaines de vos propres extensions privées en même temps, vous pouvez avoir une certaine compréhension de Nginx Lua et voir si vous pouvez les combiner et les appliquer ; créer un meilleur modèle

● L'exigence à ce stade est une compréhension approfondie des principes de Nginx. Vous pouvez envisager de devenir un professionnel approfondi dans la direction de Nginx.

3.MySQL/MongoDB :

● Sur la base de la deuxième étape, en termes d'applications MySQL, en plus de l'optimisation SQL de base précédente, il peut également effectuer certaines opérations complexes, telles que l'importation et l'exportation de gros lots de données, la modification de la structure des tables des gros lots en ligne. de données, ou l'ajout et la suppression de champs d'index. En plus de l'installation et de la configuration, il a été capable de gérer des problèmes MySQL plus complexes, tels que le traçage de divers problèmes, la résolution de problèmes de retard de synchronisation maître-esclave et les problèmes de synchronisation croisée. -solutions de synchronisation des données de salle des machines, architecture MySQL haute disponibilité, etc. ;

● Au niveau de l'application MySQL, vous connaissez les technologies clés de base de MySQL, telles que les mécanismes de transaction (niveaux d'isolation, verrous, etc.), et avez une certaine compréhension et application des déclencheurs, des partitions et d'autres technologies

;

● Concernant les performances MySQL, cela inclut l'optimisation du disque (migration SAS vers SSD), l'optimisation du serveur (mémoire, configuration du serveur), d'autres options d'optimisation des performances de base en plus de la deuxième étape (innodb_log_buffer_size/back_log/table_open_cache/thread_cache_size/innodb_lock_wait_timeout, etc.) , application de sélection de logiciel de pool de connexion, possède une compréhension approfondie des instructions d'opération telles que show * (afficher l'état/afficher le profil) et peut effectuer la plupart des recherches de problèmes de performances

; ● Connaissance approfondie de la technologie de sauvegarde MySQL, y compris la récupération après sinistre, une compréhension approfondie de Binlog, la sauvegarde à chaud et à froid, la sauvegarde multi-IDC, etc. ; ● Apprenez-en davantage sur les principes de MySQL, par exemple en commençant à lire une partie du code source sur le mécanisme de fonctionnement de MySQL, par exemple en apprenant le code source de la technologie de synchronisation (réplication) maître-esclave ou en vous familiarisant avec un certain moteur de stockage ( MyISAM/Innodb/TokuDB), etc. Apprenez et comprenez le code source Si les conditions le permettent, vous pouvez vous référer au moteur CSV pour développer votre propre moteur de stockage simple afin de sauvegarder certaines données et d'améliorer votre compréhension de MySQL au cours de ce processus. vous êtes intéressé, vous pouvez également envisager d’évoluer dans le sens du DBA.

● Au niveau MongoDB, vous pouvez envisager, par exemple, de commencer à appliquer MongoDB en ligne lorsque vous écrivez moins et lisez plus, ou effectuez des opérations d'analyse et de traitement de données en ligne. Les scénarios spécifiques peuvent être basés sur le travail, mais l'essentiel est de le faire. avoir une meilleure compréhension approfondie. Pour les applications dans différents scénarios de RMDBS et NoSQL, si les conditions ou les intérêts le permettent, vous pouvez commencer à en apprendre davantage sur le mécanisme de fonctionnement de MongoDB.

4.Redis/Memcached :

● Sur la base de la deuxième étape, une application et un apprentissage plus approfondis peuvent être réalisés. Parce que Memcached n'est pas particulièrement compliqué, il est recommandé de lire le code source, notamment la partie gestion de la mémoire, pour une compréhension approfondie

 ; ● Dans la partie Redis, vous pouvez faire plus d'applications de structures de données complexes (zset est utilisé pour classer les opérations de classement/le traitement des transactions est utilisé pour garantir l'atomicité dans les applications de scénarios de vente flash, cela implique davantage d'apprentissage des mécanismes de synchronisation tels que l'application aof), concevoir une architecture et un cluster d'application Redis hautement disponibles ; il est recommandé d'étudier en profondeur le code source Redis et d'appliquer les connaissances accumulées dans la deuxième étape. En particulier, vous pouvez en savoir plus sur la gestion des événements de base, la gestion de la mémoire et le noyau interne. sur les structures de données, etc. Si votre intérêt le permet, vous pouvez devenir un utilisateur très professionnel de Redis.

5.PHP :

● En tant que compétences de base de base, nous avons besoin d'une étude et d'une application plus approfondies basées sur la deuxième étape. En termes d'application de code de base, il peut résoudre 95 % des problèmes rencontrés dans le développement PHP et comprendre la plupart des compétences PHP

; ● Être capable de commencer rapidement à utiliser la plupart des frameworks PHP en une journée et de comprendre les avantages et les inconvénients de chaque framework PHP grand public, ce qui permet de sélectionner rapidement et facilement la technologie pendant le développement du projet ; ● En termes de configuration, en plus des connaissances générales de la deuxième étape, vous comprendrez également certaines options de configuration plus obscures (php auto_prepend_file/auto_append_file), y compris certaines configurations et principes avancés complexes dans l'extension (tels que memcache.hash_strategy dans la configuration de l'extension memcached), apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection dans la configuration de l'extension apc

● Avoir une bonne compréhension du mécanisme de fonctionnement de php, y compris le mécanisme de fonctionnement de php-fpm (tel que le calcul et le principe du nombre de processus activés par php-fpm sous différentes machines de configuration), avoir une connaissance de base de zend moteur (traitement vm/gc/stream), et avoir lu le code source du noyau PHP de base (ou avoir lu des articles pertinents), avoir une compréhension de l'implémentation de la plupart des structures de données de base (types de base/Array/Object) des mécanismes internes de PHP, et avoir une compréhension approfondie de l'infrastructure de base (zval/hashtable/gc) ;

● Être capable de réaliser le développement de base d'extensions PHP, comprendre certaines connaissances intermédiaires et avancées du développement d'extensions (minit/rinit, etc.) et être familier avec les détails des différentes méthodes de communication et d'interaction entre php et apache/nginx (mod_php/ fastcgi);

● En plus de développer des extensions PHP, vous pouvez envisager d'apprendre à développer des extensions Zend pour comprendre PHP à un niveau inférieur.

6.C/C :

● Sur la base de la deuxième étape, vous pouvez avoir une compréhension plus approfondie du langage C/C et achever le développement de systèmes C/C de petite et moyenne taille

 ; ● En plus de la syntaxe C/C de base et des structures de données dans la deuxième étape, vous pouvez également apprendre certaines structures de données spéciales (b-tree/rb-tree/skiplist/lsm-tree/trie-tree, etc.) pour faciliter vos besoins en travaux particuliers

● En termes de programmation système, être familier avec la programmation multi-processus et multi-thread ; comprendre la plupart des méthodes de communication entre multi-processus dans des situations multi-processus, et être capable de choisir avec flexibilité les méthodes de communication (mémoire partagée/sémaphore/pipeline). , etc.) ; être doué en programmation multi-thread ; résoudre les problèmes de conflits de verrouillage et être capable de développer et de déboguer des programmes multi-thread en même temps, être familier avec la programmation réseau, comprendre les différences et les sélections des modèles multi-processus ; /modèles multithread/modèles d'E/S de réseau asynchrone, et être familier avec les différences et les sélections des différents modèles d'E/S de réseau asynchrone Principes et différences (select/poll/epoll/iocp, etc.), et familier avec les cadres asynchrones courants (ACE/ ICE/libev/libevent/libuv/Boost.ASIO, etc.) et leurs utilisations Si vous avez du temps libre, vous pouvez également jeter un œil à certaines bibliothèques développées au niveau national (comme muduo) ; peut concevoir une architecture de programme à haute concurrence (leader-suivre/maître-travailleur, etc.

) ; ● Comprendre la plupart des problématiques de développement de serveurs back-end C/C (gestion de la mémoire, impression de journaux, haute concurrence, protocoles de communication front-end et back-end, surveillance des services), et connaître les problèmes de communication RPC de chaque back-end service (struct/http/thirft/protobuf, etc.) ); Être capable d'utiliser GCC et GDB de manière plus familière pour développer des programmes de compilation et de débogage, et être capable de tracer et de résoudre rapidement les problèmes une fois le programme en ligne terminé

● En termes de développement général de modules, vous pouvez accumuler ou développer certains outils ou bibliothèques généraux (tels que des infrastructures de réseau asynchrones, des bibliothèques de journaux, des pools de mémoire, des pools de threads, etc.), mais vous devez faire attention à ne pas les appliquer après le développement à éviter de chasser les bugs ;

7. Front-end :

● Compréhension approfondie du protocole HTTP (y compris les codes de protocole spéciaux de chaque protocole détaillé et les raisons qui le sous-tendent, telles que 302 fichiers statiques sont mis en cache, 502 signifie que php derrière nginx est en panne, etc.) ;

● En plus des capacités d'intégration précédentes de diverses applications-cadres dans le front-end, si vous souhaitez apprendre le front-end, vous pouvez aller plus en profondeur sous la forme de, vous pouvez développer des frameworks front-end. comme jQuery vous-même, ou développez un éditeur de texte riche Test trivial de compétences JavaScript

8. Apprentissage des langues dans d'autres domaines :

● Avoir une accumulation de base dans le langage PHP/C/C de base. Il est recommandé d'essayer d'apprendre différents langages de programmation au stade actuel. En fonction de vos intérêts personnels et de vos passe-temps, vous pouvez apprendre Python/Ruby pour les langages de script. et les langages de programmation fonctionnels. Essayez Lisp/Haskell/Scala/Erlang et autres. Pour les langages statiques, essayez Java/Golang. Pour l'analyse statistique des données, vous pouvez en apprendre davantage sur le langage R. Dans une perspective différente, vous pouvez essayer Node.js et Nginx_Lua mentionné ci-dessus, etc., qui sont combinés avec Nginx.

● Apprendre différentes langues consiste principalement à améliorer votre propre vision et les différences dans les méthodes de résolution de problèmes. Par exemple, vous comprendrez qu'en plus des processus/threads, il existe également des coroutines légères, par exemple dans la communication inter-machines ; Dans plusieurs scénarios, la solution d'Erlang est étonnamment simple : par exemple, si vous ne souhaitez pas choisir C/C, il existe également des Erlang/Golang efficaces similaires, etc. ;

9. Étudier dans d'autres directions professionnelles :

À ce stade, en plus des compétences de base du LNMP, vous envisagerez également d’acquérir des connaissances dans d’autres domaines. Tout cela est possible, en fonction de vos intérêts personnels et de vos objectifs à long terme. Aujourd'hui, les domaines sont nombreux, comme le cloud computing (stockage distribué, informatique distribuée, machines virtuelles, etc.), le machine learning (data mining, reconnaissance de formes, etc., appliqué aux statistiques, recommandations personnalisées), le naturel. traitement du langage (segmentation des mots chinois, etc.), technologie des moteurs de recherche, graphiques et images, reconnaissance vocale, etc. En plus de ces domaines avancés, il existe également de nombreux domaines dans lesquels vous pouvez en apprendre davantage sur l'ingénierie, comme les systèmes hautes performances, le développement mobile (Android/IOS), la sécurité informatique, les systèmes embarqués, le matériel, etc.

10. Conception du système :

Sur la base de la deuxième étape de la conception du système, vous pouvez appliquer l'expérience et les compétences que vous maîtrisez pour concevoir des systèmes relativement complexes à moyenne et grande échelle, qui peuvent résoudre la plupart des problèmes de divers systèmes complexes en ligne et effectuer des tâches similaires à celles des navigateurs -> ; CDN - > Équilibrage de charge->Couche d'accès-> Nginx PHP -> Base de données-> Diverses interactions RPC backend complexes (backend de stockage, backend logique, backend anti-triche, services externes) - > Activité plus complexe du backend Jiangzi

● Capable de prendre en charge le développement et la maintenance normaux de sites Web avec des dizaines à des centaines de millions de trafic chaque jour.

Post-scriptum

Quant à l'architecture supérieure ou au stade expert, cet article n'en parlera pas pour le moment. Les amis intéressés peuvent le rechercher par eux-mêmes. Enfin, je recommande sincèrement le site PHP chinois adapté aux nouveaux arrivants en programmation PHP. de l'entrée à la feuille de route d'auto-apprentissage avancée , je vous souhaite à tous de devenir un maître PHP le plus rapidement possible.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn