Maison > Article > développement back-end > Version simple du parcours d'apprentissage des programmeurs PHP et suggestions d'apprentissage
Afin que vous puissiez mieux apprendre PHP, cette fois, je veux principalement parler du parcours d'apprentissage PHP, trier les exigences techniques pour les programmeurs PHP à chaque étape et fixer des objectifs d'apprentissage et de croissance en fonction de votre propre situation.
Itinéraires d'apprentissage et suggestions pour les débutants PHP
Nous devons avoir un processus d'apprentissage étape par étape. Ici, nous résumerons d'abord le processus d'apprentissage de PHP, qui est similaire à celui de beaucoup. Passionnés de PHP. Ils coïncident les uns avec les autres :
(1) Familier avec HTML/CSS/JS et les éléments de base des pages Web. Peut créer lui-même des pages Web simples pendant la phase de réalisation et est relativement familier avec. attributs des éléments
(2 ) Comprendre les concepts et les mécanismes de fonctionnement des langages dynamiques et se familiariser avec la syntaxe de base de PHP
(3) Apprenez à combiner PHP et HTML pour compléter des pages dynamiques simples
(4) Contacter l'apprentissage MySQL, commencer à concevoir la base de données
(5) Continuer à consolider la syntaxe PHP, se familiariser avec la plupart des fonctions PHP courantes, comprendre la programmation orientée objet, l'optimisation MySQL, et quelques modèles et frameworks
(6) Enfin, complétez un site dynamique entièrement fonctionnel
Les débutants ne devraient pas penser qu'apprendre PHP est très simple après avoir vu le résumé ci-dessus. La programmation nécessite une réflexion sérieuse et une pratique continue. . Ce qui suit est une explication détaillée du parcours d’apprentissage PHP. Tout d'abord, tout site Web est composé de pages Web. En d'autres termes, si vous souhaitez réaliser un site Web, vous devez d'abord apprendre à créer des pages Web. La maîtrise de la technologie de création de pages Web statiques est une condition préalable pour apprendre à développer des sites Web. Par conséquent, nous devons apprendre le HTML pour jeter les bases de la création de sites Web à l’avenir. L'apprentissage du HTML doit se faire tout en apprenant. Chaque élément du HTML doit être pratiqué personnellement. Ce n'est qu'après avoir compris quel élément aura quel effet que vous pourrez vous en souvenir profondément.
Supposons que vous puissiez le faire. Déjà Après avoir terminé une page statique, il est temps de commencer à comprendre les langages dynamiques. De nombreuses personnes peuvent avoir beaucoup de confusion lorsqu'elles entrent en contact avec les langages dynamiques. Le code n'est pas généré directement, mais doit être traité par HTML. un analyseur HTML. Et PHP doit également passer par l'analyseur PHP. Tout comme pour apprendre le HTML, si vous voulez qu'un analyseur fonctionne, vous devez utiliser sa structure syntaxique dédiée
Vous devriez vous sentir chanceux d'apprendre PHP, car Si vous apprenez Après avoir utilisé d'autres langages, vous constaterez que PHP est encore relativement simple. À ce stade, vous devez comprendre les concepts de HTML et PHP. Vous pouvez maintenant laisser PHP calculer un plus un, puis l'ajouter au nombre. dans la sortie du navigateur. Ne vous sentez pas naïf Bien qu'il s'agisse d'un petit morceau de code, il s'agit d'un grand pas en avant dans votre parcours de programmation. Mais maintenant, vous êtes encore un débutant
La prochaine étape consiste à apprendre la base de données. MySQL peut être considéré comme le partenaire en or de PHP. Nous voulons conquérir cette base de données. , vous devez essayer d'utiliser PHP pour vous connecter à la base de données, puis utiliser PHP pour réussir à insérer, supprimer et mettre à jour les données
À ce moment, vous êtes peut-être dans cet état : Connaissez-vous le HTML ? Oui, je peux compiler plusieurs pages Web avec des mises en page de tableaux ! Connaissez-vous PHP ? Oui, j'écrirai l'opération un plus un dans la fonction puis je l'appellerai ! Connaissez-vous MySQL ? Oui, je peux insérer et supprimer des données dans la base de données !
Alors, que devons-nous faire ensuite ? Essayez de créer un petit livre d’or. C’est aussi un obstacle auquel sont confrontés les novices. Au bout d'un moment, vous avez enfin appris à insérer les données du formulaire dans la base de données puis à les afficher. Il faut dire que le prototype d'un programme est né. Cependant, vous pouvez consulter le forum d'édition de quelqu'un ou développer un CMS. Quand puis-je en écrire un ? Ne vous inquiétez pas, consolidez vos connaissances et familiarisez-vous avec l'essentiel du développement PHP et MySQL. Revenez ensuite au livre d'or que vous avez écrit. Vous vous demandez peut-être s'il a vraiment été écrit par vous ? À ce moment-là, vous pouvez améliorer le livre d’or que vous avez écrit. Le livre d'or doit avoir des fonctions d'enregistrement et de pagination. Si possible, l'interface utilisateur peut également être améliorée
Cela compte-t-il comme un apprentissage ? NON, NON, NON, il est encore tôt Vous n'avez pas encore touché à la POO, n'est-ce pas ? Qu’en est-il des modèles et des frameworks ? Encore faut-il continuer à apprendre ! Le framework PHP fournit un cadre de base pour créer des applications Web, simplifiant ainsi le processus d'écriture d'applications Web en PHP. Cela peut gagner du temps de développement et aider à créer des applications plus stables. Ainsi, le framework PHP est un outil qui peut être utilisé pour gagner du temps et améliorer votre code. Lorsque vous choisissez un framework PHP pour la première fois, il est recommandé d'en essayer plusieurs. Chaque framework a ses propres forces et faiblesses. Par exemple, le framework Zend est populaire depuis longtemps en raison de ses diverses fonctions et de son large support. système. CakePHP est un framework PHP postérieur à Zend, et a moins de systèmes de support correspondants, mais il est plus pratique et plus facile à utiliser
Après avoir compris l'orientation objet et les frameworks, vous devriez entrer en contact avec XML. Vous ne constaterez jamais que vous avez tout appris, il n’y a pas de fin à l’apprentissage ! Lorsque vous apprenez quelque chose, ne présumez jamais que vous pouvez y parvenir rapidement. Peu importe le nombre de compétences que vous possédez, cela sera vain si vous manquez de travail acharné. Une chose qui peut être garantie est que si vous apprenez PHP, vous apprendrez certainement d'autres langages rapidement, et vice versa. Si vous avez déjà appris d'autres langages, vous apprendrez certainement PHP rapidement. 🎜>
Il est certainement bénéfique d'en apprendre davantage sur les codes à succès d'autres personnes, donc regarder ces codes classiques qui ont été affinés au fil du temps est le meilleur moyen de progresser. De plus, il convient de souligner que vous pouvez rencontrer des difficultés et être confus lors de l'apprentissage d'une technologie. Vous avez peut-être appris la moitié de PHP et recommencez à penser au C#, ou quelqu'un peut dire que Java est très bon en ce moment. pas Agiter, persister et apprendre à fond.
Parlons du processus d'apprentissage par étapes :
La première étape : étape de base (programmeur PHP de base)
Focus : devenir compétent en LNMP (le noyau est les opérations de base de installation et configuration)
Objectifs : Être capable d'effectuer l'installation, la configuration et la maintenance de base du système LNMP ; être capable de faire du développement PHP de base de systèmes simples ; être capable de prendre en charge le développement d'un certain module de fonction PHP dans ; un système PHP de taille moyenne.
Durée : Le temps nécessaire pour terminer cette étape varie d'une personne à l'autre. Certains grandissent plus vite qu'une demi-année et certains 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 ; attendez.
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 créer nginx. php_fpm fonctionne correctement.
3.MySQL
Peut construire MySQL par lui-même, 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 deux moteurs d'InnoDB et MyISAM ; Connaître les bases La différence entre les deux moteurs et la différence de sélection : vous pouvez compiler et construire une base de données MySQL uniquement à la main et configurer l'encodage pour qu'il fonctionne 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 ), 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 ;Être capable d'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 le permet, vous pouvez correctement apprendre HTML/CSS/JS et d'autres connaissances connexes, savoir quelles sont les normes Web, le mode page Web/wap du div css, savoir HTML5 et La différence entre HTML4 ; comprendre certains frameworks front-end et JS de base (jQuery et similaires) ; comprendre certaines connaissances de base en programmation JavaScript (Cet élément n'est pas requis. Si vous avez le temps, vous pouvez en apprendre un peu ; à ce sujet, mais ce n'est pas recommandé comme objectif, à moins qu'il n'y ait 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 de compléter la conception de base : navigateur-> et développement de travaux d'architecture de bases de données ; capable de prendre en charge le développement et la maintenance de sites Web avec des centaines de milliers à des millions de trafic chaque jour
Deuxième étape : étape d'amélioration (programmeur PHP intermédiaire)
Focus ; : améliorer les compétences pour LNMP, peut avoir une application plus complète et plus compétente de LNMP.
Objectifs : Être capable de mettre en place un environnement LNMP à tout moment et en tout lieu, et d'effectuer rapidement les configurations de routine ; être capable de traquer et de résoudre la plupart des problèmes de développement et d'environnement en ligne rencontrés ; être capable d'entreprendre l'architecture de manière indépendante ; et développement de systèmes de taille moyenne; être capable d'entreprendre le travail 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 des scripts Shell pour effectuer de nombreux travaux automatisés ; awk/sed/perl fonctionne également bien et peut effectuer beaucoup de choses ; de traitement de texte et de statistiques de données ; essentiellement 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.) ; Services Linux, savoir visualiser les données des indicateurs de performances Linux, connaître le suivi de base des problèmes sous Linux, etc.
2. Nginx
Sur la base de la première étape, comprenez la configuration plus complexe de Nginx ; y compris la configuration multicœur, les événements, proxy_pass, la configuration sendfile/tcp_*, connaître le délai d'attente et d'autres configurations associées. et Impact sur les performances ; savoir qu'en plus du serveur Web, nginx peut également effectuer des configurations de serveur proxy, de serveur statique inversé et autres ; connaître le réglage de base de la configuration de nginx, savoir comment configurer les autorisations, compiler une extension nginx pour nginx ; principe (mécanisme maître/travailleur, epoll), sachez pourquoi les performances de nginx sont meilleures que les performances d'Apache et d'autres connaissances.
3.MySQL/MongoDB
Sur la base de la première étape, en termes de développement MySQL, maîtriser de nombreuses astuces, dont l'optimisation SQL classique (optimisation group by/order by/rand, etc.) en plus de pouvoir construire MySQL, vous pouvez ; également des données MySQL de sauvegarde à chaud et à froid. Je connais é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 je connais également les valeurs appropriées. pour configurer ces options ; je connais également certaines options de configuration spéciales, comme savoir comment configurer un environnement synchrone maître-esclave mysql, connaître la différence entre chaque binlog_format connaître le suivi des performances de MySQL, y compris slow_log/explain, etc., et connaître également l'établissement et le traitement de l'index de base ; comprendre l'architecture de base de MySQL (moteur de stockage du serveur) en termes de principes, et connaître les structures et les différences de base du stockage d'index InnoDB/MyISAM (index clusterisé, B-tree) ; mécanisme de traitement des transactions ; comprendre les solutions pour la plupart des exceptions MySQL (ou savoir où trouver les solutions). Si les conditions le permettent, il est recommandé de se renseigner sur la base de données MongoDB, qui est représentative de NoSQL, et de comparer les différences avec MySQL. Les collègues peuvent 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
Le traitement du cache sera certainement impliqué dans la plupart des systèmes de taille moyenne, vous devez donc comprendre le cache de base et connaître les similitudes, les différences et les scénarios d'application de Memcached et Redis ; , et être capable d'installer Redis/Memcached de manière indépendante, comprendre certaines fonctionnalités et limitations de base de Memcahed, telles que la valeur maximale, et savoir comment combiner PHP avec leur utilisation, comprendre les principes de fonctionnement de base et l'utilisation de Redis, comprendre les données conventionnelles ; types et savoir quels types sont utilisés dans quels scénarios de transactions Redis, etc. Dans la 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, en savoir plus sur les transactions de Redis, RDB, AOF et autres mécanismes.
5. PHP
En plus des capacités de la première étape, en termes d'installation et de configuration, vous pouvez installer librement la configuration de compilation et d'installation de PHP et de diverses extensions tierces ; des options de configuration de php-fpm et de leur signification (telles que max_requests/max_children/request_terminate_timeout et d'autres configurations qui affectent les performances), connaître la différence entre mod_php/fastcgi sont devenus compétents dans diverses technologies de base en PHP, y compris diverses plus approfondies ; PHP, y compris une connaissance orientée objet de PHP Avoir une compréhension approfondie des particularités au niveau de la syntaxe /SPL/ telles que la réflexion avoir lu le code d'au moins un framework PHP MVC conventionnel en termes de frameworks, et connaître les mécanisme de mise en œuvre interne et idées de conception du framework PHP de base; avoir été capable de développer en PHP Maîtriser l'utilisation de modèles de conception conventionnels pour le développement d'applications (usine abstraite/cas unique/observateur/chaîne de commandes/stratégie/adaptateur, etc.) ; Il est recommandé de développer votre propre framework PHP MVC pour libéraliser complètement le développement et vous permettre de comprendre en profondeur le modèle MVC. Il vous permet également de vous mettre à niveau rapidement dans le développement de projets d'entreprise et de vous familiariser avec diverses méthodes d'optimisation de code de PHP et de vous familiariser avec la résolution. la plupart des problèmes de sécurité PHP ; être familier avec les principes de base du mécanisme d'exécution PHP (moteur Zend/mécanisme de travail de base étendu).
6. C/C
Commencez à vous familiariser avec certains langages C/C, soyez capable d'écrire du code C/C de base et familiarisez-vous avec la syntaxe de base C/C (pointeurs, tableaux opérations, chaînes de caractères, API standard régulière) et structures de données (listes chaînées, arbres, hachages, files d'attente) ; avoir une compréhension de base des concepts de développement du langage C sous Linux, être capable d'écrire des fichiers makefile simples et être capable d'utiliser du GCC simple. Compilation de programmes /GDB et travaux de débogage simples ; avoir une compréhension générale de la programmation réseau de base. (Cet élément vise à jeter les bases d’un niveau supérieur).
7. Front-end
Sur la base de la première étape, soyez familier 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 en profondeur du JavaScript HTML CSS légèrement élégant, ou la possibilité d'utiliser certains frameworks frontaux (jQuery/YUI/ExtJS/RequireJS/BootStrap, etc.) si les conditions le permettent, vous pouvez étudier en profondeur JavaScript ; programmation, telle que le mécanisme de fermeture, le traitement DOM ; si vous souhaitez approfondir, 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
Être capable de concevoir l'architecture du site Web, la base de données et la sélection du framework PHP de base pour la plupart des systèmes de taille moyenne ; effectuer des tâches telles que : Navigateur-> CDN (Squid) -> Nginx PHP -> Conception, développement et maintenance de base de sites Web de structure de base de données capables 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 phase : Stage avancé (programmeur PHP senior)
Points clés : En plus des programmes LNMP de base, vous pouvez également avoir un apprentissage approfondi dans un certaine direction ou champ. (Développement de la dimension de profondeur)
Objectif : En plus d'être capable de réaliser le développement commercial de base de PHP, vous pouvez également résoudre les problèmes techniques les plus approfondis et les plus complexes, et vous pouvez concevoir et réaliser de manière indépendante des projets à moyenne et grande échelle. travail de conception et de développement de systèmes ; vous pouvez indépendamment Hold approfondir une certaine direction technique et est 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 été capable d'écrire des scripts shell relativement complexes (plus de 500 lignes) pour aider à accomplir de nombreuses tâches shell, notamment la sauvegarde, le traitement automatisé, la surveillance, etc. awk/sed/perl, et peut contrôler et traiter les statistiques de texte à volonté. Analyser les données dans divers formats complexes ; avoir une certaine compréhension des mécanismes internes de Linux et avoir également un traitement de base du chargement des modules du noyau, de la gestion des erreurs de démarrage, etc. ; comprendre d'autres choses connexes, telles que NFS, la gestion des disques, etc.
2 Nginx
Sur la base de la deuxième étape, j'ai été capable d'utiliser Nginx de manière très compétente et je peux. effectuer des travaux d'exploitation et de maintenance plus approfondis sur Nginx, tels que la surveillance, l'optimisation des performances, la résolution 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 sous plusieurs aspects ; principalement à partir de la lecture du code source, tel que 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., etc. en même temps, vous pouvez apprendre le développement d'extensions Nginx et personnaliser certaines des vôtres ; extensions privées ; en même temps, vous pouvez avoir un certain degré de compréhension de Nginx Lua et voir si vous pouvez le combiner et l'appliquer pour créer un meilleur modèle ; l'exigence à ce stade est d'avoir une compréhension approfondie des principes ; de Nginx Si vous comprenez, vous pouvez envisager de devenir un professionnel approfondi dans le sens de Nginx.
3. MySQL/MongoDB
Basé sur 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 de gros lots. des opérations à haut risque telles que l'importation et l'exportation, la modification des structures de tables ou l'ajout ou la suppression de champs d'index pour de grandes quantités de données en ligne, 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 ; divers problèmes et résolution des problèmes de retard de synchronisation maître-esclave. , solutions de synchronisation des données entre salles informatiques, architecture MySQL à haute disponibilité, etc.; connaissent le niveau d'application MySQL, connaissent les technologies clés de base de MySQL, telles que les mécanismes de transaction ( niveaux d'isolation, verrous, etc.), et avoir une connaissance des déclencheurs, des partitions et d'autres technologies. Doit comprendre et appliquer les performances de MySQL, y compris l'optimisation du disque (migration SAS vers SSD), l'optimisation du serveur (mémoire, configuration du serveur lui-même), d'autres noyaux. options d'optimisation des performances 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 connexions, compréhension approfondie des instructions d'opération telles que show * (show status/show profile) et capable pour effectuer la plupart des recherches de problèmes de performances ; familiarité approfondie avec la technologie de sauvegarde MySQL, y compris la récupération après sinistre et la récupération, et Binlog ; Compréhension approfondie de la sauvegarde à chaud et à froid, de la sauvegarde multi-IDC, etc. ; comme commencer à lire une partie du code source du mécanisme de travail de MySQL, comme apprendre le code source de la technologie de synchronisation (réplication) maître-esclave, ou apprendre un certain Apprendre et comprendre le code source des moteurs de stockage (MyISAM/Innodb/ TokuDB), etc. 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 dans ce processus, si vous êtes intéressé, vous pouvez également envisager de développer dans le direction de DBA. Au niveau de MongoDB, vous pouvez envisager, par exemple, de commencer à appliquer MongoDB en ligne en écrivant moins et en lisant plus, ou en effectuant 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 d'avoir. une compréhension meilleure et approfondie de RMDBS Pour les applications dans différents scénarios de 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 complexe, il est recommandé de lire le code source, en particulier la partie gestion de la mémoire, pour faciliter une compréhension approfondie ; dans la partie Redis, vous pouvez réaliser des applications de structure de données plus complexes (zset est utilisé pour les opérations de classement ; /traitement des transactions pour garantir qu'Atomicity est utilisé dans les applications de scénarios de vente flash) ; cela implique principalement l'apprentissage d'applications de mécanismes de synchronisation tels que aof, et la conception d'une architecture et d'un cluster d'application Redis hautement disponibles, il est recommandé d'étudier le code source de Redis dans ; En profondeur et mettez-le dans la deuxième étape. Les connaissances accumulées peuvent être appliquées. En particulier, vous pouvez lire sur la gestion des événements de base, la gestion de la mémoire, la structure interne des données de base, etc. pour bien les comprendre. 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, vous pouvez résoudre 95 % des problèmes rencontrés dans le développement PHP et comprendre la plupart des techniques PHP ; vous pouvez rapidement commencer à utiliser la plupart des frameworks PHP en une journée et comprendre les avantages de chaque framework PHP traditionnel. Il peut effectuer une sélection technologique rapide et pratique pendant le développement du projet ; en termes de configuration, en plus des connaissances acquises dans la deuxième étape, vous connaîtrez également certaines options de configuration plus obscures (php auto_prepend_file/auto_append_file), y compris certaines configurations avancées complexes dans extensions et principes (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 fonctionnement de php-fpm) ; mécanisme (tel que php-fpm permet le calcul et le principe du numéro de processus sous différentes machines de configuration), a une connaissance de base du moteur zend (traitement vm/gc/stream), a lu le code source de base du noyau PHP (ou lu des articles connexes), et a une compréhension du mécanisme interne de PHP Avoir une compréhension de l'implémentation de la plupart des structures de données de base (types de base/Array/Object) et avoir une compréhension approfondie de l'infrastructure de base (zval/hashtable/gc be) ; capable d'effectuer le développement de base d'extensions PHP et de comprendre certaines connaissances intermédiaires et avancées du développement d'extensions (minit/rinit, etc.), ê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 terminer 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 votre 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.); la programmation multithread peut bien résoudre les problèmes de conflit de verrouillage et être capable de développer et de déboguer des programmes multithreads en même temps, se familiariser avec la programmation réseau, comprendre les différences et la sélection ; des modèles multi-processus/modèles multi-thread/modèles d'E/S de réseau asynchrone, et être familier avec les principes et la sélection des différents modèles d'E/S de réseau asynchrone Différences (select/poll/epoll/iocp, etc.), et être familier avec les modèles asynchrones courants frameworks (ACE/ICE/libev /libevent/libuv/Boost.ASIO, etc.) et leur utilisation si vous avez le temps, vous pouvez également jeter un œil à certaines bibliothèques développées au niveau national (comme muduo en même temps) ; être capable de concevoir une bonne architecture de programme à haute concurrence (leader-follow/master-worker, etc.) ; comprendre la plupart des problèmes liés au développement de serveurs back-end C/C (gestion de la mémoire, impression de journaux, haute concurrence, front-end) ; Protocole de communication final et back-end, surveillance des services), connaître les problèmes de communication RPC de divers services back-end (struct/http/thirft/protobuf, etc.) être plus familier avec l'utilisation de GCC et GDB pour développer des programmes de compilation et de débogage ; , et être capable de retracer et de suivre rapidement la perte du cœur du programme en ligne. Résolvez les problèmes 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 cadres de réseau asynchrones, des bibliothèques de journaux, des pools de mémoire, des threads). pools, etc.), mais vous devez faire attention à ne pas les appliquer après le développement pour vous éviter de rechercher des 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, par exemple 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 approfondir sous forme de développement. certains frameworks front-end comme jQuery vous-même, ou développer un éditeur de texte riche, ce qui est relativement trivial. Testez vos compétences JavaScript.
8. Apprentissage des langues dans d'autres domaines
Avoir une accumulation de base en langage PHP/C/C de base Il est recommandé d'essayer d'apprendre différents langages de programmation au stade actuel, en fonction du stade actuel. sur les intérêts personnels et les loisirs, les scripts. Pour les langages de classe, vous pouvez apprendre Python/Ruby et autres. Pour les langages de programmation fonctionnels, vous pouvez essayer Lisp/Haskell/Scala/Erlang. Pour les langages statiques, vous pouvez essayer Java/Golang. analyse statistique, vous pouvez en apprendre davantage sur le langage R. Si vous souhaitez changer la perspective des activités back-end, vous pouvez essayer Node.js et Nginx_Lua susmentionné en combinaison 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 les scénarios de communication inter-machines ; , 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 des intérêts personnels et des 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 de systèmes
Sur la base de la deuxième étape, la conception de systèmes peut appliquer l'expérience et les compétences maîtrisées pour concevoir des systèmes relativement complexes de taille moyenne et grande, qui peuvent résoudre la plupart des problèmes en ligne. problèmes, tels que le navigateur-> CDN -> équilibrage de charge-> couche d'accès-> Nginx PHP -> base de données d'entreprise-> backend anti-triche, services externes) -> Services backend plus complexes capables 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 ;
Enfin, partagez 10 conseils d'optimisation des performances PHP pour vous aider à mieux développer avec PHP :
1. Foreach est plus efficace, essayez d'utiliser foreach au lieu de while et for loop
2. Ne déclarez pas de variables à l'intérieur d'une boucle, en particulier des variables telles que des objets
3. Dans plusieurs boucles imbriquées, si possible, la boucle la plus longue doit être placée dans la couche interne, la boucle la plus courte est placée dans la couche externe, réduisant ainsi le nombre de fois où le processeur traverse la couche de boucle et optimisant les performances du programme
4. Utilisez des guillemets simples au lieu de guillemets doubles pour citer des chaînes afin d'optimiser les performances PHP
5 , utilisez i =1 au lieu de i=i 1. Il est conforme aux habitudes c/c et est très efficace
6. Optimisez l'instruction Select SQL et effectuez le moins d'opérations d'insertion et de mise à jour possible pour atteindre l'objectif d'optimisation des performances PHP
7, , essayez de faire le moins d'opérations sur les fichiers possible, bien que l'efficacité des opérations sur les fichiers de PHP ne soit pas faible
8., Utilisez les fonctions internes de PHP autant que possible
9., vous pouvez utiliser PHP interne caractères Dans le cas de fonctions d'opération de chaîne, n'utilisez pas d'expressions régulières
10. Feof, fgets, fopen, et lorsque file_get_contents peut être utilisé à la place des méthodes de fichier ou de série, essayez d'utiliser file_get_contents car c'est beaucoup plus efficace. . Mais faites attention au problème de version PHP de file_get_contents lors de l'ouverture d'un fichier URL