PHP 程序员的技巧成长安插

按照摸底的不在少数PHP/LNMP程序员的上进轨迹,结合个人经验认知,抽象出累累程序员对将来的蔓延,尤其对技术学习的盲目和慌张,简单梳理了那个每个阶段PHP程序员的技艺需要,来提携众多PHP程序做相比较设定学习成长目的。

正文根据如今主流技术做了一个基本的梳理,整个是一旦PHP程序员不是基础万分实在的意况开展的设定,并且拥有设定都相当具体明确清晰,可能会令人以为不适,请精晓仅表示一家之辞。(未来技术转移不在切磋范围)

率先品级:基础阶段(基础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下边的题材跟踪等。

2. Nginx: 

在率先品级的基本功方面,领悟复杂一些的Nginx配置;包涵 多核配置、events、proxy_pass,sendfile/tcp_*配置,
知道超时等连锁配置和属性影响;知道nginx除了web server,仍可以顶住代理服务器、反向静态服务器等安顿;知道基本的nginx配置调优;
知道怎么样陈设权力、编译一个nginx扩大到nginx;知道基本的nginx运行规律(master/worker机制,epoll),知道怎么
nginx性能比apache性能好等知识;

3. 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的整合开发。

4. Redis/Memcached:

在多数不大不小系统里面肯定会波及到缓存处理,所以必然要询问大旨的缓存;知道Memcached和Redis的异同和采纳场景,可以独立安
装 Redis/Memcached,了然Memcahed的片段要旨特征和限制,比如最大的value值,知道PHP跟她们的运用结合;Redis掌握基本工作规律和动用,精晓健康的数据类型,知道怎么处境应用什么项目,了然Redis的业务等等。原理部分,可以大体掌握Memcached的内存结构
(slab机制),redis就询问常用数据类型底层完成存储结构(SDS/链表/SkipList/HashTable)等等,顺便精晓一下Redis
的政工、RDB、AOF等机制更好

5. 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引擎/扩充基本工作机制);

6. C/C++: 

开始读书一定的C/C++语言,可以写基本的C/C++代码,对中央的C/C++语法熟识(指针、数组操作、字符串、常规专业API)和数据结构
(链表、树、哈希、队列)有自然的熟谙下;对Linux下边的C语言开发有要旨的了然概念,会不难的makefile文件编写,可以使用简便的
GCC/GDB的顺序编译不难调试工作;对大旨的网络编程有大概通晓。(本项是为着向更高层次打下基础)

7. 前端:

在首先等级的基本功方面,熟练基本的HTTP协议(协议代码200/300/400/500,基本的HTTP交互头);条件允许,可以在深切写出些许
优雅的HTML+CSS+JavaScript,或者可以大体简单利用一些前端框架(jQuery/YUI/ExtJS/RequireJS/Bootstrap等等);即使基准允许,可以深切学习JavaScript编程,比如闭包机制、DOM处理;再深远些可以读读jQuery源码做深入学习。(本项不做紧要学习,除非对前者有趣味)

8. 种类规划:

可见统筹一大半中等系统的网站架构、数据库、基本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、磁盘管理等等;

2. Nginx: 

在其次阶段的底蕴方面,已经可以把Nginx操作的很内行,能够对Nginx进行更深切的运维工作,比如监控、性能优化,复杂难点处理等等;看个人
兴趣,越来越多地点可以设想侧重在关于Nginx工作原理部分的深刻学习,紧要呈现在翻阅源码起先,比如具体的master/worker工作机
制,Nginx内部的事件处理,内存管理等等;同时可以学习Nginx增添的开销,可以定制一些谈得来个人的壮大;同时可以对Nginx+Lua有自然水平
的刺探,看看是还是不是足以构成使用出更好格局;那个等级的须要是对Nginx原理的深深明白,可以考虑成为Nginx方向的递进专业者。

3. 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的做事机制。

4. Redis/Memcached:

在其次等级的底子方面,可以更尖锐的施用和读书。因为Memcached不是专程复杂,提出方可把源码举行阅读,尤其是内存管理一些,方便深远领会;Redis部分,可以多做一些错综复杂的数据结构的使用(zset来做名次榜排序操作/事务处理用来保险原子性在秒杀类场景应用之类的利用操作);多涉及
aof等联手机制的学习应用,设计一个高可用的Redis应用架构和集群;提议方可深切的读书一下Redis的源码,把在其次等级积累的学问都得以动用
上,更加可以阅读一下概括基本事件管理、内存管理、内部基本数据结构等尽量学习理解一下。假使兴趣允许,能够变成一个Redis方面万分标准的使用者。

5. 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。

6. 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;

7. 前端:

深刻摸底HTTP协议(包罗种种细致协议特殊协议代码和骨子里原因,比如302静态文件缓存了,502是nginx前面php挂了等等的);除了前边的前端方面的各类框架应用整合能力,前端方面的上学若是有趣味能够更尖锐,表现形式是,可以协调支付一些近乎jQuery的前端框架,或者开发一个富文本
编辑器之类的可比零碎考验JavaScript功力;

8. 其他世界语言学习:

在基础的PHP/C/C++语言方面有主题积累,提议在当前阶段可以尝尝学习差其他编程语言,看个人兴趣爱好,脚本类语言可以学习 Python
/Ruby 之类的,函数式编程语言可以尝试 Lisp/Haskell/Scala/Erlang 之类的,静态语言可以试行 Java
/Golang,数据总结分析可以了然摸底R语言,假使想换个视角做后端业务,可以尝试 Node.js还有前边提到的跟Nginx结合的
Nginx_Lua等。学习差其他语言重如若升格自己的视野和化解难题手段的歧异,比如会询问除了进程/线程,还有轻量级协程;比如在跨机器通讯场景上面,Erlang的化解方案大约的惊人;比如在不想拔取C/C++的情形下,还有类似高效的Erlang/Golang可用等等;首假诺升迁视野。

9. 其他专业方向学习:

在本阶段里面,会除了主导的LNMP技能之外,会考虑部分任何世界知识的就学,那些都是可以的,看个人兴趣和长时间的目的方向。方今状态能够挑选的领
域相比多,比如、云总结(分布式存储、分布式总结、虚拟机等),机器学习(数据挖掘、格局识别等,应用到统计、个性化推荐),自然语言处理(普通话分词
等),搜索引擎技术、图形图像、语音识别等等。除了这么些伟大上的,也有层出不穷偏工程地点可以学学的地点,比如高性能系统、移动支付
(Android/IOS)、计算机安全、嵌入式系统、硬件等倾向。

10. 体系规划:

系统规划在第二品级的根基之上,可以利用驾驭的阅历技术,设计出相比复杂的中大型系统,可以解决半数以上线上的各类繁复系统的标题,达成接近 浏览器 -> CDN -> 负载均衡 ->
接入层 -> Nginx+PHP -> 业务缓存 -> 数据库 -> 各路复杂后端RPC交互(存储后端、逻辑后端、反作弊
后端、外部服务) -> 越来越多后端 酱紫的复杂性工作;能够协助天天数千万到数亿流量网站的正常费用爱抚工作。

网站地图xml地图