Home headlines What technologies do PHP programmers need to master to advance?

What technologies do PHP programmers need to master to advance?

Jun 27, 2018 am 11:00 AM

This article divides PHP programmers into two categories: intermediate and advanced programmers, and explores the skills that these two categories of programmers should have.

Intermediate PHP Programmer

1.Linux:

Be able to use Shell scripts smoothly to complete many automated tasks ; awk/sed/perl also operates well and can complete a lot of text processing and data statistics; it can basically install most non-special Linux programs (including various libraries, packages, third-party dependencies, etc., such as MongoDB/Redis /Sphinx/Luncene/SVN and the like); understand basic Linux services, know how to view Linux performance indicator data, know basic issue tracking under Linux, etc.

2. Nginx:

Based on the first stage, understand the more complex Nginx configuration; including multi-core configuration, events, proxy_pass, sendfile/tcp_* configuration, know the timeout and other related configuration and performance impact; know that nginx is in addition to the web server , can also undertake the configuration of proxy servers, reverse static servers, etc.; know basic nginx configuration tuning; know how to configure permissions, compile an nginx extension to nginx; know the basic nginx operating principles (master/worker mechanism, epoll), know Knowledge about why nginx performance is better than apache performance;

3. MySQL/MongoDB:

On the basis of the first stage, I have mastered many small skills in MySQL development. Skills, including general SQL optimization (group by/order by/rand optimization, etc.); in addition to being able to build MySQL, you can also hot and cold backup MySQL data, and you also know the configuration options that affect innodb/myisam performance (such as key_buffer/query_cache /sort_buffer/innodb_buffer_pool_size /innodb_flush_log_at_trx_commit, etc.), and also know the appropriate values ​​for configuring these options; in addition, I also know some special configuration options, such as knowing how to set up a mysql master-slave synchronization environment, knowing the differences between various binlog_format; knowing the performance tracking of MySQL, including slow_log/ explain, etc., you can also know basic index creation processing and other knowledge; understand the basic MySQL architecture (Server storage engine) in terms of principles, know the basic InnoDB/MyISAM index storage structure and differences (clustered index, B-tree); know the basic InnoDB transaction processing mechanism; understand the solutions to most MySQL exceptions (or know where to find the solutions). If conditions permit, it is recommended to learn about the MongoDB database, a representative of NoSQL, and compare the differences with MySQL. Colleagues can use MongoDB safely and prudently in suitable application scenarios, and know the basic combined development of PHP and MongoDB.

4. Redis/Memcached:

In most medium-sized systems, cache processing will definitely be involved, so you must understand the basic cache; know Memcached and Redis Similarities, differences and application scenarios, be able to install Redis/Memcached independently, understand some basic features and limitations of Memcached, such as the maximum value, and know how to combine PHP with their use; understand the basic working principles and usage of Redis, understand conventional data types, and know Which types should be used in what scenarios, understand Redis transactions, etc. In the principle part, you can have a general understanding of the memory structure of Memcached (slab mechanism). Redis understands the underlying implementation storage structure of common data types (SDS/linked list/SkipList/HashTable), etc. By the way, you can learn more about Redis's transactions, RDB, AOF and other mechanisms. Good

5. PHP:

In addition to the first stage capabilities, in terms of installation and configuration, you can freely install the compilation and installation configuration of PHP and various third-party extensions; understand PHP -Most of the configuration options and meanings of fpm (such as max_requests/max_children/request_terminate_timeout and other configurations that affect performance), know the difference between mod_php/fastcgi; have become proficient in various basic technologies in PHP, including various more in-depth PHP, including in-depth understanding of PHP object-oriented/SPL/special features at the syntax level such as reflection; in terms of frameworks, I have read the code of at least one conventional PHP MVC framework, and know the internal implementation mechanism and design of the basic PHP framework Thought; in PHP development, you have become proficient in using conventional design patterns for application development (abstract factory/single case/observer/command chain/strategy/adapter, etc. patterns); it is recommended to develop your own PHP MVC framework to fully liberalize development , let yourself deeply understand the MVC model, and also enable yourself to quickly upgrade in business project development; be familiar with various code optimization methods of PHP, and be familiar with solving most PHP security problems; be familiar with the basic PHP execution mechanism principles (Zend Basic working mechanism of engine/expansion);

6. System design:

Able to design website architecture, database, and basic PHP framework selection for most medium-sized systems; performance Testing, troubleshooting, etc.; can complete basic design, development and maintenance of websites similar to: browser-> CDN (Squid) -> Nginx PHP -> cache-> database structure; can support millions to tens of millions of basic traffic every day Website development and maintenance work;

Senior PHP Programmer

Focus: In addition to basic LNMP programs, you can also have in-depth study in a certain direction or field. (Deep dimension development)

Goal: In addition to being able to complete basic PHP business development, you can also solve most in-depth and complex technical problems, and can independently design and complete medium and large-scale system design and development work; you can independently hold a deep dive into a certain technical direction, and work in This one is more professional. (For example, in-depth research in any direction such as MySQL, Nginx, PHP, Redis, etc.)

1. Linux:

In addition to the second stage capabilities, under Linux In addition to regular operations and performance monitoring and tracking, you can also use many advanced and complex commands to complete the work (watch/tcpdump/starce/ldd/ar, etc.); in terms of shell scripts, you can already write relatively complex shell scripts (more than 500 lines) Shell to assist in completing many tasks including backup, automated processing, monitoring, etc.; has become proficient in applications such as awk/sed/perl, and can freely operate, control, process, text statistics and analyze data in various complex formats; has knowledge of Linux internal mechanisms Some understanding, basic processing of kernel module loading, startup error handling, etc.; also some understanding of other related things, such as NFS, disk management, etc.;

2. Nginx:

On the basis of the second stage, I have been able to operate Nginx very proficiently and can perform more in-depth operation and maintenance work on Nginx, such as monitoring, performance optimization, complex problem handling, etc.; see For personal interests, you can consider focusing on in-depth study of the working principle of Nginx, mainly starting from reading the source code, such as the specific master/worker working mechanism, Nginx internal event processing, memory management, etc.; at the same time, you can learn Nginx In the development of extensions, you can customize some of your own private extensions; at the same time, you can have a certain degree of understanding of Nginx Lua to see if it can be combined and applied to create a better model; the requirement at this stage is an in-depth understanding of the principles of Nginx, and you can consider becoming an Nginx developer In-depth professional in the direction.

3. MySQL/MongoDB:

Based on the second stage, in terms of MySQL applications, in addition to the previous basic SQL optimization, some complex tasks can also be completed. Operations, such as importing and exporting large batches of data, changing table structures or adding or deleting index fields for online large batches of data, and other high-risk operations; in addition to installation and configuration, it has been able to handle more complex MySQL problems, such as the tracing of various problems. Solving the master-slave synchronization delay problem, cross-machine room synchronization data solutions, MySQL high-availability architecture, etc. are all involved; for the MySQL application level, I am familiar with the core key technologies of MySQL, such as transaction mechanisms (isolation levels, locks, etc.), Have a certain understanding and application of technologies such as triggers and partitions; MySQL performance includes disk optimization (SAS migration to SSD), server optimization (memory, server configuration), and other core performance optimization options in addition to the second stage (innodb_log_buffer_size/ back_log/table_open_cache /thread_cache_size/innodb_lock_wait_timeout, etc.), connection pool software selection application, have in-depth understanding of operation statements such as show * (show status/show profile), and can complete most performance problem tracing; in-depth familiarity with MySQL backup technology, Including disaster recovery and restoration, in-depth understanding of Binlog, hot and cold backup, multi-IDC backup, etc.; have a better understanding of MySQL principles, such as starting to read some source codes for the working mechanism of MySQL, such as master-slave synchronization (replication) technology Source code learning, or source code learning and understanding of a certain storage engine (MyISAM/Innodb/TokuDB), etc. If conditions permit, you can refer to the CSV engine to develop your own simple storage engine to save some data and enhance your understanding of MySQL; In this process, if you are interested, you can also consider developing in the direction of DBA. At the MongoDB level, you can consider, for example, starting to apply MongoDB online when writing less and reading more, or doing some online data analysis and processing operations. The specific scenarios can be based on the work, but the core is to have a better and in-depth understanding of RMDBS. For applications in different scenarios from NoSQL, if conditions or interests permit, you can start to learn more about the working mechanism of MongoDB.

4. Redis/Memcached:

Based on the second stage, more in-depth application and learning can be achieved. Because Memcached is not particularly complicated, it is recommended to read the source code, especially the memory management part, to facilitate in-depth understanding; in the Redis part, you can do more complex data structure applications (zset is used for ranking ranking operations/transaction processing to ensure Atomicity is used in flash sale scenario applications); it mostly involves learning applications of synchronization mechanisms such as aof, and designing a highly available Redis application architecture and cluster; it is recommended that you study the source code of Redis in depth and put it into the second stage The accumulated knowledge can be applied. In particular, you can read about core event management, memory management, internal core data structure, etc. to fully understand it. If your interest allows, you can become a very professional user of Redis.

5. PHP:

As basic core skills, we need more in-depth study and application based on the second stage. In terms of basic code application, you can solve 95% of the problems encountered in PHP development and understand most PHP techniques; you can quickly start using most PHP frameworks within a day, and understand the advantages of each mainstream PHP framework. Disadvantages: It can quickly and conveniently make technology selection in project development; in terms of configuration, in addition to the knowledge of the regular second stage, you will also understand some more obscure configuration options (php auto_prepend_file/auto_append_file), including some complex advanced configurations in extensions and principles (such as memcache.hash_strategy in memcached extension configuration, apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection in apc extension configuration, etc.); have a good understanding of the working mechanism of php, including php-fpm working mechanism (such as php-fpm enables process number calculation and principle under different configuration machines), has basic familiarity with the zend engine (vm/gc/stream processing), has read the basic PHP kernel source code (or read related articles), and has an understanding of the internal mechanism of PHP Have an understanding of the implementation of most core data structures (basic types/Array/Object), and have an in-depth understanding of the core infrastructure (zval/hashtable/gc); be able to carry out basic PHP extension development, and understand some intermediate and advanced knowledge of extension development (minit/rinit, etc.), be familiar with the details of different communication and interaction methods between php and apache/nginx (mod_php/fastcgi); in addition to developing PHP extensions, you can consider learning to develop Zend extensions to understand PHP from a lower level.

6. C/C:

Based on the second stage, you can have a deeper understanding of the C/C language and be able to complete small and medium-sized C programs. /C system development work; in addition to the basic C/C syntax and data structure in the second stage, you can also learn some special data structures (b-tree/rb-tree/skiplist/lsm-tree/trie-tree, etc.) for convenience Required in special work; in terms of system programming, familiar with multi-process and multi-thread programming; in multi-process situations, understand most of the communication methods between multi-processes, and be able to flexibly choose communication methods (shared memory/semaphore/pipeline, etc.); Multi-threaded programming can well solve lock conflict problems, and can develop and debug multi-threaded programs; at the same time, he is familiar with network programming, understands the differences and selections of multi-process models/multi-thread models/asynchronous network IO models, and is familiar with different The principles and differences of asynchronous network IO models (select/poll/epoll/iocp, etc.), and you are familiar with common asynchronous frameworks (ACE/ICE /libev/libevent/libuv/Boost.ASIO, etc.) and their uses. You can also take a look if you have time. Some domestically developed libraries (such as muduo); at the same time, able to design good high-concurrency program architecture (leader-follow/master-worker, etc.); understand most of the problems in C/C back-end server development (memory management, log printing , high concurrency, front-end and back-end communication protocols, service monitoring), know the RPC communication issues of each back-end service (struct/http/thirft/protobuf, etc.); be able to use GCC and GDB more familiarly to develop compilation and debugging programs, and online programs After the core is dropped, the problem can be quickly traced and solved; in terms of general module development, some general tools or libraries can be accumulated or developed (such as asynchronous network framework, log library, memory pool, thread pool, etc.), but you should be cautious whether to apply it after development. Save yourself the trouble of chasing bugs;

7. Front-end:

Deeply understand the HTTP protocol (including each detailed protocol, special protocol code and the reasons behind it, such as 302 static files Cached, 502 means that php behind nginx is down, etc.); In addition to the previous integration capabilities of various framework applications in the front-end, if you are interested in learning the front-end, you can go deeper, in the form of developing something similar to jQuery yourself. Front-end framework, or developing a rich text editor is a relatively trivial test of JavaScript skills;

8. Language learning in other fields:

In basic PHP/C /C language has basic accumulation. It is recommended that you try to learn different programming languages ​​at the current stage, depending on your personal interests and hobbies. For scripting languages, you can learn Python/Ruby, and for functional programming languages, you can try Lisp/Haskell/Scala. /Erlang and the like. For static languages, you can try Java /Golang. For data statistical analysis, you can learn about R language. If you want to change your perspective and do back-end business, you can try Node.js and the aforementioned Nginx_Lua combined with Nginx. wait. Learning different languages ​​is mainly about improving your own vision and the differences in problem-solving methods. For example, you will understand that in addition to processes/threads, there are also lightweight coroutines; for example, in cross-machine communication scenarios, Erlang's solution is surprisingly simple; for example If you don't want to choose C/C, there are also similar efficient Erlang/Golang available, etc.; mainly to improve your horizons.

9. Study in other professional directions:

At this stage, in addition to basic LNMP skills, we will also consider learning knowledge in other fields. These are all possible, depending on personal interests and long-term goals. At present, there are many fields to choose from, such as cloud computing (distributed storage, distributed computing, virtual machines, etc.), machine learning (data mining, pattern recognition, etc., applied to statistics, personalized recommendations), natural language processing ( Chinese word segmentation, etc.), search engine technology, graphics and images, speech recognition, etc. In addition to these advanced ones, there are also many places where you can learn more about engineering, such as high-performance systems, mobile development (Android/IOS), computer security, embedded systems, hardware, etc.

10. System design:

Based on the second stage, system design can apply the experience and skills mastered to design relatively complex medium and large systems. It can solve most of the problems of various complex online systems and complete tasks such as browser-> CDN -> load balancing-> access layer-> Nginx PHP -> business cache-> database-> Various complex back-end RPC interactions (storage back-end, logic back-end, anti-cheating back-end, external services) -> More complex back-end business; able to support the normal development of websites with tens to hundreds of millions of traffic every day maintenance work.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP Beginner's Guide: Parsing Taobao Product Details API Document PHP Beginner's Guide: Parsing Taobao Product Details API Document Jun 30, 2023 pm 06:22 PM

Introduction to PHP Technology: Taobao Product Details API Document Interpretation Introduction: PHP, as a programming language widely used in Web development, has a large user group and a rich extension library. Among them, using PHP to develop Taobao product details API is a very practical and common requirement. This article will provide a detailed interpretation of the Taobao product details API document to provide an introductory guide for beginners. 1. What is Taobao Product Details API? Taobao Product Details API is an interface provided by Taobao open platform.

Recommended PHP code auditing techniques and practical tools Recommended PHP code auditing techniques and practical tools Aug 08, 2023 pm 02:15 PM

Overview of recommended PHP code auditing techniques and practical tools: With the rapid development of the Internet, website security issues have become increasingly prominent. As a language widely used in Internet development, PHP's code security audit has become a very important link. This article will introduce some basic techniques for PHP code auditing and recommend several practical tools. 1. Code audit technology scans sensitive functions. In PHP code audit, the first thing to pay attention to is the use of sensitive functions. For example, the eval() function can execute any code passed in, so

From start to finish: How to write the perfect PHP programmer resume From start to finish: How to write the perfect PHP programmer resume Sep 10, 2023 pm 04:21 PM

How to write a perfect PHP programmer resume In a highly competitive job market, an excellent resume is crucial for job seekers. For PHP programmers, writing a perfect resume is particularly important, because the resume is not only a window to showcase your skills and experience, but also the key to attracting the employer's attention. This article will explain in detail how to write a perfect PHP programmer job resume from beginning to end. Step One: Choose a Concise and Attractive Resume Template Choosing a concise and attractive resume template is the first step in writing your resume.

Use PHP technology to achieve freelancing and high-paying income Use PHP technology to achieve freelancing and high-paying income Sep 10, 2023 pm 12:22 PM

Freelancing is a way of working that has attracted more and more attention in recent years, allowing people to be more flexible and free in time and location. However, many people worry about not being able to achieve their goal of a high-paying income in freelancing. However, using PHP technology can help people achieve freelancing and earn high salaries at the same time. This article will explore how to use PHP technology to achieve freelancing and high-paying income, and provide some suggestions for readers' reference. To use PHP technology to achieve freelancing and high-paying income, you first need to have solid PHP programming skills. PHP is a

Don't be ignored anymore! Learn how to design an impressive PHP programmer resume Don't be ignored anymore! Learn how to design an impressive PHP programmer resume Sep 08, 2023 pm 04:30 PM

Don't be ignored anymore! Learn How to Design an Impressive PHP Programmer Resume In today's competitive job market, having an impressive resume is key to landing your dream job. Especially for technical positions such as PHP programmers, resumes are a window to showcase your skills and experience. This article will teach you how to design an impressive PHP programmer resume, complete with code examples. First, a good resume will attract the reader's attention. The title should succinctly describe your

Improve PHP skills and move towards high-paying jobs Improve PHP skills and move towards high-paying jobs Sep 10, 2023 am 09:42 AM

With the development of the Internet industry, PHP technology plays an important role in website development. For PHP developers, improving their technical level is the key to getting high-paying positions. This article will explore how to improve your PHP skills and move towards a high-paying position. 1. In-depth study of PHP language and framework To improve your own PHP technology, you first need to conduct in-depth study of PHP language. Understanding PHP's syntax rules, features, and common problems is the first step to getting started. You can learn PHP by reading official documentation, professional books and online tutorials

With just a PHP technical card, you can choose high-paying jobs With just a PHP technical card, you can choose high-paying jobs Sep 09, 2023 pm 05:10 PM

With just a PHP technology card, you can choose high-paying positions. As a PHP developer, mastering this flexible programming language, you will have the opportunity to obtain high-paying positions in the job market. PHP is a scripting language widely used in web development, which allows developers to easily build powerful websites and applications. This article will introduce you to some high-paying jobs in PHP and sample code to help you seize this opportunity. PHP full-stack development engineer Full-stack development engineer is one of the most popular positions on the current market. this position

Improve your job search success rate: Tips for writing an excellent PHP programmer job resume Improve your job search success rate: Tips for writing an excellent PHP programmer job resume Sep 10, 2023 pm 06:30 PM

Improve job search success rate: Tips for writing an excellent PHP programmer job resume In modern society, job hunting has become an important task faced by every graduate. When it comes to applying for a job, your resume is the most important piece. An excellent resume can win you an interview and even determine whether you can successfully get a job. Especially for a highly competitive position like PHP programmer, how to write an outstanding resume has become a key issue for every job seeker. Below I will share some tips for writing an excellent PHP programmer job resume.