php进阶之路–转载

事先有看了相关的稿子,觉得还是当下首详细点,有实际的靶子实现起来才再度产生动力

转载自:http://wen.52fhy.com/2016/2016-09-03-PHP-cheng-xu-yuan-xue-xi-lu-xian-zhuan.html

第一等:基础等(基础PHP程序员)

要害:把LNMP搞纯(核心是设置配备基本操作)

靶:能够不辱使命中心的LNMP系统安装,简单布置维护;能够开为主的粗略系的PHP开发;能够在PHP中型系统受到支持有PHP功能模块的开发。

时光:完本等的工夫因人而异,有的成长快半年一样年即过了,成长缓慢的两三年也时有发生。

1.Linux

中心命令、操作、启动、基本服务配置(包括rpm安装文件,各种服务配置等);会写简单的shell脚本和awk/sed
脚本命令等。

2.Nginx

完能设置配置nginx+php,知道基本的nginx核心配置选,知道
server/fastcgi_pass/access_log
等基础配置,目标是能被nginx+php_fpm顺利工作。

3.MySQL

会晤自己搭建mysql,知道基本的mysql配置选;知道innodb和myisam的分,知道针对InnoDB和MyISAM两单引擎的不比安排选;知道基本的鲜独引擎的差异及选面的区别;能够纯手工编译搭建一个MySQL数据库并且配备好编码等健康稳定运行;核心主旨是会增加建筑一个但运行的MySQL数据库。

4.PHP

着力语法数组、字符串、数据库、XML、Socket、GD/ImageMgk图片处理等等;熟悉各种跟MySQL操作链接的api(mysql/mysqli/PDO),知道各种编码问题的缓解;知道健康熟练运用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf等);了解基本MVC的运行机制和怎么这么做,稍微懂得不同之PHP框架中的区分;能够迅速学习一个MVC框架。能够知情开工程被的文件目录组织,有基本的美妙的代码结构以及作风,能够完成多少系统的支付以及中等系统遭到之一模块的付出工作。

5.前端

倘基准时允许,可以恰到好处学习下 HTML/CSS/JS
等息息相关文化,知道什么web标准,div+css的web/wap页面模式,知道HTML5和HTML4之区别;了解一些主干的前端只是和JS框架(jQuery之类的);了解有中坚的JavaScript编程知识;(本项不是必项,如果来时间,稍微了解一下凡是足以的,不过未建议视作首要,除非个人来显而易见兴趣)。

6.系统设计

能够一气呵成小型系的核心计划,包括简单的数据库设计,能够形成基本的:浏览器
-> Nginx+PHP -> 数据库
架构的计划性开发工作;能够支持每天几十万到数百万流量网站的支出保护工作;

第二等级:提高等 (中级PHP程序员)

要害:提高对LNMP的技术,能够再次完美的对准LNMP有懂行的行使。

目标:能够随时随地搭建筑好LNMP环境,快速形成正常配置;能够追查解决大部分遇上的开支及线上环境之问题;能够独立负责中型系统的构架和支付工作;能够当巨型系统受承担某个中型模块的支付工作。

  1. Linux

在率先等的基础方面,能够通的用Shell脚本来就很多自动化的办事;awk/sed/perl
也操作的科学,能够完成很多文本处理和数据统计等工作;基本会设置大部分无突出的Linux程序(包括各种库、包、第三正依等等,比如MongoDB/Redis/Sphinx/Luncene/SVN之类的);了解核心的Linux服务,知道哪查看Linux的性能指标数据,知道基本的Linux下面的问题跟等。

  1. Nginx

当首先流的基本功方面,了解复杂一些底Nginx配置;包括
多对配置、events、proxy_pass,sendfile/tcp_*配置,知道过等连锁部署与特性影响;知道nginx除了web
server,还会担负代理服务器、反向静态服务器等布置;知道基本的nginx配置调优;知道怎么样布置权力、编译一个nginx扩展至nginx;知道基本的nginx运行原理(master/worker机制,epoll),知道为什么nginx性能比apache性能好等知。

  1. MySQL/MongoDB

当首先等级的底蕴方面,在MySQL开发方面,掌握很多小技巧,包括健康SQL优化(group
by/order
by/rand优化等);除了能搭建MySQL,还能冷热备份MySQL数据,还明白影响innodb/myisam性能的配备选(比如key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size/innodb_flush_log_at_trx_commit等),也知晓这些选择配置成为多少值合适;另外为了解有奇之布局选,比如
知道怎么样搭建mysql主从同步的条件,知道各个binlog_format的别;知道MySQL的性追查,包括slow_log/explain等,还能知道基本的目建立处理等文化;原理方面了解核心的MySQL的架构(Server+存储引擎),知道基本的InnoDB/MyISAM索引存储结构及不同(聚簇索引,B树);知道基本的InnoDB事务处理机制;了解大部分MySQL异常情况的拍卖方案(或者了解哪里找到处理方案)。条件允许的情形,建议了解一下NoSQL的代表MongoDB数据库,顺便对比与MySQL的歧异,同事会以宜的运场景安全谨慎之运MongoDB,知道基本的PHP与MongoDB的重组开发。

  1. Redis/Memcached

每当多数中系统中肯定会涉及到缓存处理,所以自然要是打听基本的缓存;知道Memcached和Redis的异议以及以场景,能够单独设置
Redis/Memcached,了解Memcahed的组成部分基本特性与限制,比如最酷之value值,知道PHP跟她俩之运结合;Redis了解核心工作规律同应用,了解健康的数据类型,知道呀状况下什么品种,了解Redis的事情等等。原理部分,能够大体了解Memcached的内存结构(slab机制),redis就了解常用数据类型底层实现存储结构(SDS/链表/SkipList/HashTable)等等,顺便了解一下Redis的作业、RDB、AOF等机制再次好。

  1. PHP

而外第一等的力量,安装配备方面会轻易安装PHP和各种第三正在扩大的编译安装配备;了解php-fpm的多数布局选和意义(如max_requests/max_children/request_terminate_timeout之类的影响性的配置),知道mod_php/fastcgi的界别;在PHP方面曾能够娴熟各种基础技术,还连各种深入些的PHP,包括针对PHP面向对象的递进了解/SPL/语法层面的奇特性状比如反射之类的;在框架方面曾经看了至少一个以上常规PHP
MVC框架的代码了,知道基本PHP框架中贯彻机制及规划思想;在PHP开发被就能够娴熟使用正规的设计模式来使开发(抽象工厂/单例/观察者/命令链/策略/适配器
等模式);建议开发协调的PHP
MVC框架来充分被开发自由化,让好深刻明MVC模式,也让自己会在事情类别支出里飞提升;熟悉PHP的各种代码优化方法,熟悉大部分PHP安全者问题之缓解处理;熟悉基本的PHP执行的机制原理(Zend引擎/扩展基本工作机制)。

  1. C/C++

初始阅读一定之C/C++语言,能够写基本的C/C++代码,对骨干的C/C++语法熟悉(指针、数组操作、字符串、常规专业API)和数据结构(链表、树、哈希、队列)有得的熟稔下;对Linux下面的C语言开发有中心的垂询概念,会略的makefile文件编制,能够使用简便的GCC/GDB的次第编译简单调试工作;对核心的网络编程有约了解。(本项是为为更强层次打下基础)。

  1. 前端

在率先等的根底方面,熟悉基本的HTTP协议(协议代码200/300/400/500,基本的HTTP交互头);条件允许,可以以深深写有小优雅的HTML+CSS+JavaScript,或者会大体简单利用一些前端框架(jQuery/YUI/ExtJS/RequireJS/BootStrap之类);如果基准允许,可以深入学JavaScript编程,比如闭包机制、DOM处理;再深刻些可以读读jQuery源码做深刻学。(本项不开重要上,除非对前者有趣味)。

  1. 系统规划

能够统筹大部分适中系统的网站架构、数据库、基本PHP框架选型;性能测试排查处理等;能够形成接近:浏览器
-> CDN(Squid) -> Nginx+PHP -> 缓存 -> 数据库
结构网站的主干计划开保护;能够支持每天数百万至绝对流量基本网站的支出保护工作;

老三路:高级阶段 (高级PHP程序员)

要害:除了核心的LNMP程序,还会在某某方向或领域发生深入学。(纵深维度发展)

靶:除了会好基本的PHP业务支付,还能够化解大部分深刻复杂的艺问题,并且可以独立设计成就着巨型的网规划和开发工作;自己能够单独hold深入某个技术可行性,在这块比较专业。(比如在MySQL、Nginx、PHP、Redis等等任一正于深入钻研)

  1. Linux

除开次级的力,在Linux下面除了常规的操作以及性监控跟踪,还能利用群高级复杂的命就工作(watch/tcpdump/starce/ldd/ar等);在shell脚本方面,已经能编写比较复杂的shell脚本(超过500尽)来支援完成很多席卷备份、自动化处理、监控等工作的shell;对awk/sed/perl
等应用已使不悦纯青,能够轻易操作控制处理公事统计分析各种复杂格式的数额;对Linux内部机制起有打探,对内核模块加载,启动错误处理等等有只基本的处理;同时对一些其他有关的物吧了解,比如NFS、磁盘管理等等;

  1. Nginx

每当第二品级的基础方面,已经能将Nginx操作的异常娴熟,能够针对Nginx进行再次深切之运维工作,比如监控、性能优化,复杂问题处理等等;看个人兴趣,更多点可考虑侧重在关于Nginx工作规律部分的深入学,主要表现于翻阅源码开始,比如具体的master/worker工作体制,Nginx内部的事件处理,内存管理等等;同时可以上Nginx扩展的开发,可以定制一些和谐个人的恢弘;同时可以针对Nginx+Lua有自然水准之垂询,看看是不是好构成使用来更好模式;这个等级的要求凡针对性Nginx原理的深刻理解,可以考虑成为Nginx方向的深入专业者。

  1. MySQL/MongoDB

每当次流的底子方面,在MySQL应用方面,除了之前的基本SQL优化,还能够当好部分扑朔迷离操作,比如大批量数的导入导出,线及大批量数目的更改表结构或增删索引字段等等高危操作;除了设置配备,已经能处理又多复杂的MySQL的题材,比如各种问题之追查,主从同步延迟问题的缓解、跨机房同步数据方案、MySQL高可用架构等还来关联了解;对MySQL应用规模,对MySQL的为主关键技术比较熟悉,比如工作机制(隔离级别、锁相等)、对触发器、分区等技巧产生早晚了解与运用;对MySQL性能方面,有包括磁盘优化(SAS迁移至SSD)、服务器优化(内存、服务器本身配置)、除了次品级的任何中心性能优化增选(innodb_log_buffer_size/back_log/table_open_cache/thread_cache_size/innodb_lock_wait_timeout等)、连接池软件选择以,对show
*(show status/show
profile)类的操作语句子有尖锐摸底,能够就大部分之性能问题追查;MySQL备份技术之尖锐熟悉,包括灾备还原、对Binlog的中肯理解,冷热备份,多IDC备份等;在MySQL原理方面,有重新多了解,比如针对MySQL的劳作体制起阅读有源码,比如对核心同步(复制)技术的源码学习,或者对某存储引擎(MyISAM/Innodb/TokuDB)等等的源码学习掌握,如果基准允许,可以参见CSV引擎开发协调大概的存储引擎来保存有数量,增强针对性MySQL的领悟;在这过程,如果协调生趣味,也得以考虑为DBA方向发展。MongoDB层面,可以设想比如说在写少读多之情初步在线上运用MongoDB,或者是举行一些丝及之多少解析处理的操作,具体状况可以依照工作来,不过基本是设再次好的深透明RMDBS和NoSQL的异景象下的下,如果基准或兴趣允许,可以起深入上一下MongoDB的工作体制。

  1. Redis/Memcached

在其次品的基础方面,能够又深切的以与学。因为Memcached不是专门复杂,建议可管源码进行阅读,特别是内存管理一些,方便深入了解;Redis部分,可以多开片繁杂的数据结构的采取(zset来做排行榜排序操作/事务处理用来担保原子性在秒杀类场景下之类的利用操作);多关系aof等一起机制的读下,设计一个高可用之Redis应用架构和集群;建议可深入的习一下Redis的源码,把在次号积累的知识都好下及,特别好翻阅一下连基本事件管理、内存管理、内部基本数据结构等充分学习了解一下。如果兴趣允许,可以改为一个Redis方面挺规范的使用者。

  1. PHP

作为基础核心技术,我们于次品的底蕴方面,需要来双重透之修及运用。从中心代码应用方面吧,能够化解在PHP开发中遇95%之问题,了解大部分PHP的技能;对绝大多数的PHP框架能够迅速于同等龙内达到亲手使用,并且了解各个主流PHP框架的得失,能够快方便项目支付中做技术选型;在布局方面,除了正常第二阶段会的学识,会了解部分较偏门的配备选(php
auto_prepend_file/auto_append_file),包括扩大中的有的复杂高级配置与法则(比如memcached扩展配置中的memcache.hash_strategy、apc扩展配置中之apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection之类的);对php的办事体制比较了解,包括php-fpm工作体制(比如php-fpm在不同安排机器下面被进程数量计算和原理),对zend引擎有核心熟悉(vm/gc/stream处理),阅读过主导的PHP内核源码(或者看了有关文章),对PHP内部机制的大多数主导数据结构(基础类型/Array/Object)实现有了解,对于着力基础结构(zval/hashtable/gc)有深刻学习了解;能够进行着力的PHP扩展开发,了解一些扩展开发的受高等知识(minit/rinit等),熟悉php跟apache/nginx不同的通信交互方式细节(mod_php/fastcgi);除了支付PHP扩展,可以设想学习开发Zend扩展,从更底层去询问PHP。

  1. C/C++

在其次品级基础方面,能够当C/C++语言方面出双重透之读了解,能够做到中小型C/C++系统的开工作;除了主导第二级的基础C/C++语法和数据结构,也能上有些特别数据结构(b-tree/rb-tree/skiplist/lsm-tree/trie-tree等)方便在特别工作被需;在网编程方面,熟悉多进程、多线程编程;多进程情况下面了解大部分多进程中的通信方式,能够灵活选择通信方式(共享内存/信号量/管道等);多线程编程能够好的缓解锁冲突问题,并且会进行多线程程序的付出调试工作;同时对网络编程比较熟悉,了解多进程模型/多线程模型/异步网络IO模型的出入和选型,熟悉不同异步网络IO模型的原理及反差(select/poll/epoll/iocp等),并且熟悉周边的异步框架(ACE/ICE/libev/libevent/libuv/Boost.ASIO等)和应用,如果闲暇也足以省有国产好开支之堆栈(比如muduo);同时能统筹好的大并发程序架构(leader-follow/master-worker等);了解大部分C/C++后端Server开发被的题材(内存管理、日志打印、高并发、前后端通信协议、服务监督),知道各个后端服务RPC通信问题(struct/http/thirft/protobuf等);能够再次熟络的行使GCC和GDB来出编译调试程序,在线上先后core掉后会迅速追查跟踪解决问题;通用模块出方,可以累积或者开发片通用的工具或库(比如异步网络框架、日志库、内存池、线程池等),不过出后是否动要谨小慎微,省之幂坑去追bug。

  1. 前端

深入了解HTTP协议(包括各个细致协议特殊协议代码和骨子里原因,比如302静态文件缓存了,502凡是nginx后面php挂了之类的);除了前的前端方面的各种框架下成力量,前端方面的就学而有趣味可以又透彻,表现形式是,可以协调开一些好像jQuery的前端框架,或者出一个富饶文本编辑器之类的较零碎考验JavaScript功力。

  1. 外领域语言上

当基础的PHP/C/C++语言方面出核心攒,建议于脚下号可以尝试学习不同的编程语言,看个人兴趣爱好,脚本类语言可以学习
Python/Ruby 之类的,函数式编程语言可以试行 Lisp/Haskell/Scala/Erlang
之类的,静态语言可以试
Java/Golang,数据统计分析好了解了解R语言,如果想变个意见做后端业务,可以试行
Node.js还有前提到的跟Nginx结合的Nginx_Lua等。学习不同的语言主要是升级自己之视野和解决问题手段的距离,比如会询问除了进程/线程,还有轻量级协程;比如以跨机器通信场景下,Erlang的解决方案大概的震惊;比如当非思选C/C++的状况下,还有类似高效之Erlang/Golang可用等等;主要是升级视野。

  1. 另外标准方向上

在随阶段间,会除了核心的LNMP技能外,会设想部分别世界知识之学,这些都是可的,看个人兴趣和漫长的对象方向。目前情景能挑选的世界较多,比如、云计算(分布式存储、分布式计算、虚拟机等),机器上(数据挖掘、模式识别等,应用至统计、个性化推荐),自然语言处理(中文分词等),搜索引擎技术、图形图像、语音识别等等。除了这些巨大上之,也来广大偏工程方可以上的地方,比如高性能系统、移动开(Android/IOS)、计算机安全、嵌入式系统、硬件等系列化。

  1. 系统规划

网规划以亚路的底蕴之上,能够采取掌握的涉技术,设计来比较复杂的着巨型系统,能够缓解大部分丝达的各种复杂系统的题目,完成接近
浏览器 -> CDN -> 负载均衡 ->接抱层 -> Nginx+PHP ->
业务缓存 -> 数据库 ->
各路复杂后端RPC交互(存储后端、逻辑后端、反作弊后端、外部服务) ->
更多后端
酱紫的繁杂工作;能够支持每天数千万及数亿流量网站的正规开支保护工作。

 

网站地图xml地图