Good article of the--php series (i)

Source: Internet
Author: User
Tags apc epoll php and mysql php database php framework mysql backup zend install redis

Note: The recent internship is a company to do e-commerce, the background is mainly PHP development, a long time not how to contact PHP I read a few related articles, improve the understanding and understanding of it, found inside the learning mentality is very good, of course, will be re-pick up the basics!

In fact, I still have a little tangled in my mind, I feel that I learned something too miscellaneous, not very proficient. After all, the human energy is limited, for example: "If 1 years dry PHP, the second year to dry Java, the third year may be python." But when the fourth year he might want to find another job, what kind of job is he looking for? Every skill is not fine, if you are interviewing PHP, people will pay you according to your PHP level, but not very much value you also Java or Python. As a result, your salary level may be a lower-middle level salary. " in fact, a wide range of knowledge is very good, but it is afraid that you can only be a fur, you have to establish their own strengths and focus, this is what I have to understand the problem ~

Advanced PHP Engineers should have some skills

First, a calm state of mind

Like all programmers, to write a good program, no good mentality is not.

Do not be impatient, do not give up lightly.

In the process of program development, especially junior high school programmers, write the program or architecture will encounter a lot of problems, some of which are more mentally retarded, and some problems have not met, so not too impatient, should be one by one to troubleshoot the original source of the problem, to kill it. An impatient mindset to develop a system is not responsible for the project. Impatience will make people learn to do, let people learn to escape. And I personally Beijing two years of simple life, give me one of the biggest experience is: my mentality more calm.

Believe that this mentality will also help you in other aspects of the ability to do things.

Why the mentality included, I want to explain: it is different from the function of sales, need a great passion, but need to think quietly

  Two or one sets of problems solved in the heart

Once a developer of the development of a colleague in the QQ signature wrote: Each To solve a bug, give yourself a promotion. Indeed, there are no programmers who really solve countless bugs or problems, no experts, no senior programmers. And a senior programmer is from this problem-solving process to constantly experience their own, forming a set of heart problem-solving ideas, so that their strong.

I also briefly talk about the development of PHP programmers often encounter some problems, if you have not met or rarely encountered, then you are two extreme people: either beginner, or advanced, haha.

    • 1, coding problems.

    • 2, PHP and SQL database execution efficiency issues.

    • 3. Session and Cookie domain and encryption parsing problem.

    • 4. Order of execution of the program.

    • 5, the application of multi-environmental issues.

    • 6, the construction of classification and structural design problems.

    • 7, String processing problem: Regular expression processing or simple PHP string processing function to handle.

    • 8, the various template engine writing limitation problem.

    • 9, PHP and web-side data interaction issues (such as Ajax, interface calls, etc.).

  Three, excellent basic knowledge of PHP

There is no perfect basic knowledge of PHP, even if the mentality is good, the ability to solve the problem is strong, can only be armchair.

The basic knowledge will allow you to be in the process of project development.

I will also briefly say what is the basic knowledge that PHP engineers should have (in fact these are common in recruitment requirements):

    • 1, grammar rules, this does not say, this will not, there is no introduction, hurriedly buy a book or find a website to fill.

    • 2, MySQL all kinds of SQL statements, additions and deletions to the basic do not say, in (), Union,left (), the left Join,as,replace,alter table,where field sorting, various indexing methods to be particularly familiar with.

    • 3, will build their own lamp environment and WAMP environment, with integrated software one-click installation does not count. Development process, for their own development of the environment structure is not clear, how to troubleshoot problems? So at least use the opposing MSI file to install the development environment you need. Install 3-5 times Success, this is OK, you will have to install a variety of extensions, configure Apache services, know the various parameter settings and know how to set various parameters; Linux operating system basic commands.

    • 4, familiar with the web aspects of other programs, because PHP is not a completely independent thing, he is a and other languages and elements to complete a project, if the other languages and elements are not familiar with, in the team collaboration process will be very laborious. These other elements include: Html,java,jquery,xml,http protocol, regular expression, and so on.

  Iv. Integrated Internet applications and project management knowledge and literacy

  1, knowledgeable, good at learning

Only self-study, not to look at, to learn the practice of others, will be like the well-off, difficult to see the vast sky; So, do not be obsessed with programming every day, learn to take some time to see some large open source system architecture ideas, as well as the construction of large business sites. To learn from them, to supplement their own shortcomings.

For example, at least know what kinds of open source systems are available, such as Uchome,dede,phpcms,wordpress,discuz, empires, and so on.

See more, you will also summarize some of the conventional ideas, such as caching mechanisms, such as template mechanisms, such as static page generation and so on.

  2. Project Solution Selection

Different needs, with different institutions and selection. It is often said that the "punches, soldiers to block", some of the structure is strong, but for small projects will be very difficult, that is, the murderous need not sledgehammer. It is important to choose according to the requirements.

Selection is not casual can be fixed, need a PHP programmer for good Reserve, personally feel at least need the following reserves, to have the ability to choose:

    • Proficiency in the application of at least one PHP framework, two-three PHP open source system;

    • Have their own set of application systems.

  3. Good project management accomplishment

Project is not always in the development process, the project will enter the operating period, maintenance period, so that with good project management literacy will make the project more stable and controllable.

Good project management literacy includes:

    • Good project development and maintenance habits, remember: do not for a moment of effort, resulting in repeated work after repeated. Always remind oneself will work flow, process planning, standardization simplification.

    • Good multi-person cooperation management awareness: The project is not a person, is a product of multi-person collaboration, but also to serve the public, therefore, to enhance the sense of cooperation, so that the relevant personnel together to improve the project.

  4. Rich experience in project development and application

Study theory, to test or examination is the thing in school, no project experience, like full belly scripture, spit also difficult spit.

This requires the actual project to learn to translate their knowledge into the needs of the realization.

  5. Good Development Code

    • Code readability: Object, method, function comment, a set of mature naming conventions.

    • Code redundancy Bottom: The reuse of programs and files is large, cohesion, low coupling.

    • High execution efficiency: Use the simplest program flow to achieve application requirements, do not disturb the big bend.

    • Code security Good: To be a vigilant programmer, any user input and upload files in the place to be extra cautious, perhaps a programmer's momentary negligence will cause a system to crash in an instant.

In addition, a few more words, PHP Senior engineer, in fact, for a slightly can adhere to, and like PHP is not too difficult, it is difficult to learn to use tools to achieve ideas, whether it is their own ideas or the needs of others, learn to transform.

In this way, do not know more about the trend of Internet development, project development and management processes and so on.

Technical growth planning for PHP programmers

According to many PHP/LNMP Programmer's development trajectory, combined with personal experience, abstract a lot of programmers on the future of the mist, especially the blind and flustered technical learning, a simple comb this each stage of the PHP Programmer's technical requirements, to help a lot of PHP programs to set learning growth goals.

This article according to the current mainstream technology to do a basic comb, the whole is to assume that the PHP programmer is not a very solid foundation of the setting, and all the settings are very specific and clear, may make people feel uncomfortable, please understand only represents opinion. (Future technical changes are not covered)

First stage: Basic stage (basic PHP programmer)

Focus: lnmp Skilled (core is the basic operation of the installation configuration)

Objective: to complete basic LNMP system installation, simple configuration and maintenance, to be able to do basic PHP development of simple system, to support the development of a PHP function module in PHP medium-sized system.

Time: The time to complete this stage varies from person to person, and some grow up almost half a year on the past, growing slowly two or three years also have.

1.Linux:

Basic command, operation, startup, basic service configuration (including RPM installation files, various service configurations, etc.); write simple shell scripts and awk/sed script commands.

2.Nginx:

To be able to install configuration nginx+php, know the basic nginx core configuration options, know Server/fastcgi_pass/access_log and other basic configuration, the goal is to enable NGINX+PHP_FPM to work smoothly.

3.MySQL:

Will build MySQL, know the basic MySQL configuration options, know the difference between InnoDB and MyISAM, know the different configuration options for InnoDB and MyISAM two engines; know the difference between the basic two engines and choose the difference above To build a MySQL database and configure the code to run normally and stably; The core idea is to be able to build a running MySQL database.

4.PHP:

Basic syntax array, string, database, XML, Socket, gd/imagemgk image processing, and so on; be familiar with the various APIs (MYSQL/MYSQLI/PDO) linked to MySQL, and know the solution to various coding problems Know the regular skilled PHP framework (thinkphp, Zendframework, Yii, YAF, etc.); understand the basic MVC mechanism and why you do it, a little bit about the differences between different PHP frameworks, and the ability to quickly learn an MVC framework. Be able to know the file directory organization in the development project, have the basic good code structure and the style, can complete the small system development and the medium system one module development work.

5. Front End:

If the condition time allows, you can properly learn the HTML/CSS/JS and other related knowledge, know what web standards, Div+css web/wap page pattern, know the difference between HTML5 and HTML4; understand some basic frontend just and JS framework (jquery and the like) ; Understand some basic JavaScript programming knowledge; (this item is not a must, if you have time, it is possible to understand a little, but it is not recommended as a priority, unless the individual has a strong interest)

6. System Design:

Can complete the basic design of the small system, including the simple database design, can complete the basic: Browser---nginx+php database architecture design and development work, can support hundreds of thousands of to millions of daily traffic website development and maintenance work;

Phase II: Improvement phase (intermediate PHP Programmer)

Focus: improve the skills for LNMP, can be more comprehensive to the LNMP have skilled application.

Objective: to set up the LNMP environment anytime, anywhere, to quickly complete the general configuration, to trace the most encountered development and online environment problems, to be able to independently assume the framework and development of the medium-sized system, to assume the development of a medium-sized module in a large-scale system;

1. Linux:

On the basis of the first stage, we can use the shell script to do a lot of automated work smoothly, Awk/sed/perl is also very good, can complete a lot of text processing and data statistics, etc., basically can install most non-special Linux programs (including various libraries, packages, Third-party dependencies and so on, such as mongodb/redis/SPHINX/LUNCENE/SVN); Learn about basic Linux services, know how to view Linux performance metrics data, know basic Linux problem tracking, and more.

2. Nginx:

In the first stage of the foundation, understand the complex nginx configuration, including multi-core configuration, events, proxy_pass,sendfile/tcp_* configuration, know the time-out and other related configuration and performance impact; I know nginx in addition to Web server, Also can assume proxy server, reverse static server and other configuration; know the basic Nginx configuration tuning; Know how to configure permissions, compile an nginx extension to nginx; know the basic nginx operating principle (Master/worker mechanism, epoll), Know why Nginx performance is better than Apache performance and other knowledge;

3. Mysql/mongodb:

On the basis of the first stage, there are a number of tips on MySQL development, including regular SQL optimizations (group By/order By/rand Optimizations), and the ability to back up MySQL data in cold and hot, in addition to being able to build MySQL, and to know the impact innodb/ MyISAM configuration options for performance (such as key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size/innodb_flush_log_at_trx_commit, etc.), Also know how many of these options are configured to be appropriate; also know some special configuration options, such as know how to build MySQL master-slave synchronization environment, know the difference between the Binlog_format; know MySQL performance tracing, including Slow_log/explain, Knowledge of basic indexing and processing is also possible, and the principle of understanding basic MySQL architecture (server+ storage engine), knowing the basic Innodb/myisam index storage structure and different (clustered index, B-tree); know the basic INNODB transaction processing mechanism To understand most of the MySQL exception scenarios (or know where to find the processing solution). Conditions allow, it is recommended to understand the NoSQL representative MongoDB database, by contrast with the MySQL differences, colleagues can safely use MongoDB in the appropriate application scenarios, know the basic PHP with MongoDB development.

4. redis/memcached:

In most of the medium-sized system will be involved in the cache processing, so be sure to understand the basic cache; know the similarities and differences between Memcached and Redis and the application scenario, can install redis/memcached independently, understand some basic features and limitations of memcahed, such as the largest value values, know PHP with their use, Redis understand the basic work and use, understand the general data types, know what kind of scenarios to apply what type, understand Redis transactions and so on. Principle part, can understand the memory structure of memcached (slab mechanism), Redis understand the common data type underlying implementation of the storage structure (sds/linked list/skiplist/hashtable), and so on, by the way, know the Redis transaction, RDB, AoF and other mechanisms better

5. PHP:

In addition to the first-stage capabilities, installation configuration is free to install PHP and various third-party extensions of the compiled installation configuration; Understand most of the configuration options and implications of PHP-FPM (such as Max_requests/max_children/request_terminate_ Timeout and the like to affect the performance of the configuration), know the difference between the mod_php/fastcgi, in PHP has been able to master a variety of basic technology, but also a variety of in-depth PHP, including a deep understanding of PHP object-oriented/spl/syntax aspects of special features such as reflection , in the framework has read at least one of the regular PHP MVC framework Code, know the basic PHP framework internal implementation mechanism and design ideas; in PHP development has been able to skillfully use the conventional design pattern to apply development (abstract Factory/SINGLETON/Observer/Command chain/policy/Adapter and other models), it is recommended to develop your own PHP MVC framework to fully liberalize the development, allow yourself to understand the MVC pattern in depth, and allow yourself to upgrade quickly in business project development; be familiar with the various code optimization methods of PHP, familiar with most of the PHP security problem solving Familiar with basic mechanism of PHP execution (Zend Engine/extended basic working mechanism);

6. C + +:

began to dabble in a certain C + + language, be able to write basic C + + code, familiar with the basic C + + syntax (pointers, array operations, strings, general standard API) and data structures (linked list, tree, hash, queue) have a certain familiarity with the C language development below Linux has a basic understanding of the concept , will be simple makefile file writing, can use simple GCC/GDB program to compile simple debugging work, basic network programming have a general understanding. (This is to lay the groundwork for a higher level)

7. Front End:

On the basis of the first stage, familiarize yourself with the Basic HTTP protocol (Protocol Code 200/300/400/500, basic HTTP interaction header), allowing you to write a slightly elegant html+css+javascript in depth, Or it can be roughly simple to use some front-end frameworks (jquery/yui/extjs/requirejs/bootstrap, etc.), and if conditions permit, you can drill down into JavaScript programming, such as the closure mechanism, DOM processing And go deeper into the jquery source to learn more. (This item does not focus on learning unless it is interested in the front end)

8. System Design:

Able to design most of the medium-sized system Web site architecture, database, basic PHP framework selection, performance testing and processing, etc. can be completed similar to: browser----CDN (SQUID)------cache-------database structure of the Web site design and development maintenance , can support millions of to tens of thousands of daily traffic basic website development and maintenance work;

Phase III: Advanced stage (Advanced PHP programmer)

emphasis: In addition to the basic LNMP program, you can also have in-depth learning in a certain direction or field. (Depth dimension development)

Objective: In addition to the ability to complete basic PHP business development, but also to solve most of the deep and complex technical problems, and can be independently designed to complete the large-scale system design and development work, oneself can hold into a technical direction independently, in this piece of comparative professional. (such as MySQL, Nginx, PHP, Redis, and so on in any direction in-depth research)

1. Linux:

In addition to the second phase of the ability, under Linux in addition to the general operation and performance monitoring tracking, but also can use a lot of advanced complex commands to complete the work (watch/tcpdump/starce/ldd/ar, etc.); in Shell scripting, has been able to write more complex shell scripts (more than 500 lines) to assist in the completion of a lot of tasks including backup, automated processing, monitoring and other work of the shell, Awk/sed/perl and other applications such as fire pure green, able to manipulate the arbitrary control processing text statistical analysis of various complex formats of data , there is some understanding of the internal mechanism of Linux, the kernel module loading, startup error handling and so on have a basic processing, but also some other related things, such as NFS, Disk Management and so on;

2. Nginx:

In the second stage of the foundation, has been able to operate the nginx very skilled, can be more in-depth operation of nginx, such as monitoring, performance optimization, complex problem processing and so on; looking at personal interests, more aspects can be considered to focus on the Nginx working principle part of the deep learning, Mainly in the reading source, such as the specific master/worker work mechanism, nginx internal event processing, memory management and so on, but also can learn the development of Nginx extension, you can customize some of your own private extensions, but also to nginx+lua a certain degree of understanding, To see if a better model can be combined, the requirement of this stage is an in-depth understanding of the nginx principle, which can be considered as an in-depth professional in the nginx direction.

3. Mysql/mongodb:

In the second stage of the foundation, in the MySQL application, in addition to the previous basic SQL optimization, but also in the completion of a number of complex operations, such as the import and export of large quantities of data, a large number of online data change table structure or delete index fields and other high-risk operations; In addition to the installation configuration, have been able to deal with more complex MySQL problems, such as the tracing of various problems, master-Slave synchronization delay problem resolution, cross-room synchronization data scheme, MySQL high-availability architecture, etc. are involved in understanding; for MySQL application level, the core key technologies of MySQL are familiar, such as the transaction mechanism (Isolation level , locks, etc.), to trigger, partition and other technologies have a certain understanding and application; For MySQL performance, there are disk optimizations (SAS migration to SSD), Server optimizations (memory, server itself configuration), and other core performance tuning options in addition to the two phase (Innodb_log_buffer_ Size/back_log/table_open_cache/thread_cache_size/innodb_lock_wait_timeout, etc.), connection pooling software selection application, to show * (Show Status/show Profile) class operation statements have in-depth understanding, to complete most of the performance problem tracking; MySQL backup technology in-depth familiarity, including disaster recovery, deep understanding of Binlog, hot and cold backup, multi-IDC backup, etc. in the MySQL principle, there is more understanding, For example, the working mechanism of MySQL began to read some of the source code, such as the master-slave Synchronization (replication) technology source learning, or to a storage engine (MYISAM/INNODB/TOKUDB) and so on the source learning understanding, if the conditions allow, You can refer to the CSV engine to develop your own simple storage engine to save some data and enhance your understanding of MySQL, and in this process, if you are interested, you can also consider moving to DBA. MongoDB level, you can consider, for example, in the case of writing less read more and start to apply MongoDB online, or do some online data analysis processing operations, specific scenarios can follow the work, but the core is to better understand the Rmdbs and NoSQL different scenarios below the application, If the conditions or interests allow, you can begin to learn more about MongoDB's working mechanism.

4. redis/memcached:

In the second stage of the foundation, can be more in-depth application and learning. Because memcached is not particularly complex, it is suggested that the source code can be read, especially the memory management part, to facilitate in-depth understanding; Redis section, you can do more complex data structure of the application (Zset to do the leaderboard sort operations/ Transaction processing is used to ensure atomicity in the use of the second-class scene application and other applications, and more involved in the AOF and other synchronization mechanisms of learning applications, design a highly available Redis application architecture and clusters; It is suggested that we can learn the source of Redis in depth and apply the knowledge accumulated in the second stage. Especially you can read about it, including core event management, memory management, internal core data structure, and so on. If interest permits, you can become a very professional user of Redis.

5. PHP:

As a basic core skill, we need more in-depth learning and application on the basis of the second stage. From the basic code application above, can solve the PHP development encountered 95% of the problem, understand most of the PHP skills, for most of the PHP framework can be quickly used in a day, and understand the pros and cons of various mainstream PHP framework, can quickly facilitate project development to do technology selection; In addition to the general second stage of knowledge, you will learn some of the more biased gate configuration options (PHP auto_prepend_file/auto_append_file), Includes some complex advanced configurations and principles in the extension (such as the memcache.hash_strategy in the memcached extension configuration, apc.mmap_file_mask/apc.slam_defense/in the APC extended configuration Apc.file_update_protection and so on), the working mechanism of PHP, including the PHP-FPM work mechanism (such as PHP-FPM under different configuration machine to open process number calculation and principle), Zend Engine has a basic familiarity (vm/gc/ Stream processing), read the basic PHP kernel source code (or read the related article), the most core data structure of PHP internal mechanism (basic type/array/object) implementation has the understanding, for the core infrastructure (zval/hashtable/ GC) with in-depth learning, ability to perform basic PHP extension development, understanding of some advanced knowledge of extended development (minit/rinit, etc.), familiarity with PHP and apache/nginx different communication interaction details (MOD_PHP/FASTCGI) In addition to developing PHP extensions, consider learning to develop Zend extensions to understand PHP from a lower level.

6. C + +:

On the basis of the second stage, we can have a more in-depth understanding of the C + + language, and can complete the development of small and medium-sized/C + + systems. In addition to the basic second-stage base C/d syntax and data structure, you can learn some special data structures (b-tree/rb-tree/ Skiplist/lsm-tree/trie-tree, etc.) convenient in the special work of the requirements, in the system programming, familiar with multi-process, multi-threaded programming, multi-process situation below to understand the majority of multi-process communication, flexible choice of communication mode (shared memory/semaphore/pipeline, etc.) Multi-threaded programming can solve the problem of lock conflict, and be able to develop and debug multi-thread program, and be familiar with network programming, understand the difference and selection of multi-process model/multithreaded model/asynchronous Network IO Model, and be familiar with the principle and difference of different asynchronous network IO models (select/poll/ EPOLL/IOCP, etc.), and familiar with the common asynchronous framework (ace/ice/libev/libevent/libuv/ Boost.asio, etc.) and use, if leisure can also look at some of the domestic development of the library (such as Muduo), but also can design a high concurrent program architecture (Leader-follow/master-worker, etc.); Problems in Backend server development (memory management, log printing, high concurrency, front-end communication Protocol, service monitoring), knowledge of each backend service RPC communication problem (STRUCT/HTTP/THIRFT/PROTOBUF, etc.) , can be more familiar with the use of GCC and GDB to develop the compilation of debugging procedures, the online program core can be quickly traced after the tracking problem; Common module development, can accumulate or develop some common tools or libraries (such as asynchronous network framework, log library, memory pool, thread pool, etc.), However, the development of whether to use caution, the province of the buried pit to chase the bug;

7. Front End:

In-depth understanding of the HTTP protocol (including the specific protocol code and the reasons behind the detailed protocol, such as 302 static file cache, 502 is the nginx behind the PHP hang); In addition to the front-end aspects of the various framework application integration capabilities, the front-end of the study if interested can be more in-depth, the manifestation is, You can develop some kind of jquery-like front-end framework yourself, or develop a rich text editor and more trivial test JavaScript skill;

8. Other areas of language learning:

In the basic php/c/c++ language aspect has the fundamental accumulation, the suggestion in the current stage may try to learn the different programming language, sees the personal interest hobby, the script language can learn python/ruby and so on, the functional programming language may try Lisp/haskell/scala/ Erlang and the like, static language can try Java/golang, data statistical analysis can understand the R language, if you want to change perspective to do back-end business, you can try node. js and the previous mentioned with the Nginx combination of Nginx_lua and so on. Learning different languages is mainly about raising your horizons and solving the differences between the methods, such as understanding the process/thread, as well as the lightweight association, for example, under the cross-machine communication scenario, Erlang's solution is surprisingly simple, for example, if you do not want to choose C + +, there are similar efficient erlang/ Golang can be used, etc., mainly to enhance the field of vision.

9. Other professional direction study:

In this stage, in addition to the basic LNMP skills, will consider a number of other areas of knowledge learning, these are available, look at personal interests and long-term goal direction. At present, the situation can choose more areas, such as cloud computing (distributed storage, distributed computing, virtual machines, etc.), machine learning (data mining, pattern recognition, application to statistics, personalized recommendations), Natural language processing (Chinese word segmentation, etc.), search engine technology, graphic images, speech recognition and so on. In addition to these tall, there are many partial engineering aspects can be learned, such as high-performance systems, mobile development (Android/ios), computer security, embedded systems, hardware and other directions.

system design:

System design on the basis of the second stage, can apply the mastered experience and skills, design a more complex medium and large system, can solve most of the problems of complex systems on the line, complete a browser-like CDN---load balancer, access layer, and so on nginx+ Complex backend RPC interaction (storage backend, logical back end, anti-cheat backend, external service), and more complicated services for the backend Jiangzi, database---------------------------

growth bottlenecks for PHP engineers

PHP Engineers face growing bottlenecks

First of all, the PHP engineer referred to here refers to the development of web systems primarily in PHP, and does not work in its language. Work experience in about 3-4 years, ordinary Web system (millions access, level 1000 data or business logic is not particularly complex) development of basic handy, no problem. But they're going to do something like this:

In addition to PHP's non-use of other languages, a shell script may be ordered.

The mastery of PHP is not fine (many PHP manuals are not read, except the library).

Knowledge is narrower (in the face of demand, except the use of PHP and MySQL, do not know other solutions).

The PHP code takes the process as the main idea, the object-oriented implementation is too round, can not understand.

These phper are a lack of thought when it comes to the complexity of projects or business logic that requires high performance, high concurrency, and large amounts of data (systems need to address multi-domain business issues). Can not analyze the nature of the problem, technical judgment is poor, the problem can find a temporary solution, but often in the temporary solution, the system and their own step by step toward collapse. How do you improve yourself? How can you challenge a more difficult system?

Where is the higher challenge?

In combination with my own experience, I have listed some specific challenges so that we can first have a perceptual understanding.

Where are the challenges of high-performance systems?

How do I choose a Web server? Do not use fast-cgi mode;

Do you want to use the Reverse proxy service? Select Full memory cache or hard disk cache?

Do you need load balancing? Is it based on the application layer or the network layer? How to guarantee high reliability?

How is your PHP code performing, and what happens after you use the optimizer tool? Where are the performance bottlenecks? Do you need to write a C extension?

What are the characteristics of user access, read more or write more? Do you need read/write separation?

How does the data be stored? Write speed and readout speed? How does data increase access speed read change?

How do I use caching? How to consider failure? How does data consistency guarantee?

Where are the challenges of high complexity systems?

Can you identify the areas of your business? Is it one or more?

Can the business be reasonably abstracted, and the changes in business rules can be achieved at a very small cost?

Data consistency, security can be guaranteed?

Does it hold the method of object-oriented analysis and design?

You can definitely answer the questions listed here, stating that technically you may have become an architect. How you can not yet answer, you need to strengthen in the following several directions.

How to improve and break through the bottleneck

How you can not yet answer, you need to strengthen in the following several directions:

Analyze the principle of the technology you use and the mechanism behind it, so that you can improve your technical judgment and improve the correctness of your technical options.

Learn important knowledge during college, operating system principles, data structures and algorithms. Know that you used to study for the exam, but now you need to learn for yourself, let yourself know why;

Start learning C again, although you've already learned it in college. This is not only because you may need to write PHP extensions, but also because, in the application of C, there is a moment of concern for performance, memory control, variable life cycle, data structure and algorithm environment;

Learning object-oriented analysis and design, it is an effective way to solve complex problems. Learning abstraction is the only way to solve complex problems.

Good article of the--php series (i)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.