PHP 程序员的技能成长安排(转发)

 

5. PHP:

作为基础主题技术,大家在其次等级的底子方面,须求有更深切的上学和选取。从基本代码应用方面来说,能够消除在PHP开发中相见95%的标题,精晓大多数PHP的技艺;对绝超越5/10的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开发中的难点(内部存款和储蓄器管理、日
志打字与印刷、高并发、前后端通讯协议、服务监察和控制),知道各种后端服务LacrossePC通讯难题(struct/http/thirft/protobuf等);能够更熟
络的运用GCC和GDB来开发编写翻译调节和测试程序,在线上先后core掉后能够十分的快追查跟踪消除难题;通用模块开发方面,能够积累可能支付一些通用的工具或库
(比如异步网络框架、日志库、内部存款和储蓄器池、线程池等),可是开发后是或不是选拔要谨慎,省的埋坑去追bug;

7.  前端:

深深摸底HTTP协议(包蕴各种细致协议特殊协议代码和私下原因,比如302静态文件缓存了,502是nginx前面php挂了之类的);除了前面包车型地铁前端方面包车型大巴种种框架应用整合能力,前端方面的上学借使有趣味能够更尖锐,表现方式是,能够团结开发一些看似jQuery的前端框架,也许支付1个富文本
编辑器之类的相比较零碎考验JavaScript功力;

8.  其余世界语言学习:

在基础的PHP/C/C++语言方面有基本积累,提议在脚下阶段能够品尝学习不一样的编制程序语言,看个人兴趣爱好,脚本类语言可以学习 Python
/Ruby 之类的,函数式编制程序语言能够尝试 Lisp/Haskell/Scala/Erlang 之类的,静态语言可以尝试 Java
/Golang,数据总括分析能够理解理解汉兰达语言,假如想换个视角做后端业务,能够尝试 Node.js还有前边提到的跟Nginx结合的
Nginx_Lua等。学习差别的语言重倘诺升级自个儿的视野和平解决决难点手段的异样,比如会询问除了进度/线程,还有轻量级协程;比如在跨机器通讯场景下边,Erlang的化解方案大概的震惊;比如在不想选拔C/C++的场所下,还有类似高效的Erlang/Golang可用等等;首即便提高视野。

9.  其余专业方向学习:

在本阶段里面,会除了主导的LNMP技能之外,会考虑部分任何世界知识的上学,这个都是能够的,看个人兴趣和深远的对象方向。近来气象能够选拔的领
域比较多,比如、云总括(分布式存款和储蓄、分布式总结、虚拟机等),机器学习(数据挖掘、形式识别等,应用到计算、性子化推荐),自然语言处理(汉语分词
等),搜索引擎技术、图形图像、语音识别等等。除了那一个巨大上的,也有不可胜计偏工程方面能够学习的位置,比如高质量系统、移动支付
(Android/IOS)、计算机安全、嵌入式系统、硬件等方向。

10.  系统规划:

系统规划在其次品级的底子之上,能够使用通晓的经历技术,设计出比较复杂的中大型系统,能够化解大多数线上的各类复杂系统的难题,完毕接近 浏览器 -> CDN ->负载均衡 ->
接入层 -> Nginx+PHP -> 业务缓存 -> 数据库 -> 各路复杂后端凯雷德PC交互(存款和储蓄后端、逻辑后端、反作弊
后端、外部服务) -> 更加多后端 酱紫的扑朔迷离工作;能够协理每一日数千万到数亿流量网站的寻常花费珍视工作。

其三品级:高级阶段 (高级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)类的操作语句有尖锐明白,能够做到当先49%的本性难点追查;MySQL备份技术的尖锐熟谙,包涵灾备
还原、对Binlog的深透精通,冷热备份,多IDC备份等;在MySQL原理方面,有愈来愈多询问,比如对MySQL的行事体制开头读书部分源码,比如对主
从1只(复制)技术的源码学习,恐怕对有些存储引擎(MyISAM/Innodb/TokuDB)等等的源码学习理解,假使条件允许,能够参见CSV引擎
开发协调差不离的储存引擎来保存一些数目,增强对MySQL的接头;在这些历程,假设本身有趣味,也能够考虑往DBA方向前进。MongoDB层面,能够考
虑比如说在写少读多的气象初始在线上行使MongoDB,可能是做一些线上的数据解析处理的操作,具体情状能够服从工作来,可是基本是要更好的递进精通帕杰罗MDBS和NoSQL的差异情况下边的施用,如若基准如故兴趣允许,能够初始深远学习一下MongoDB的工作体制。

4.  Redis/Memcached:

在第1等级的根底方面,能够更深切的选用和读书。因为Memcached不是特地复杂,建议方可把源码进行阅读,越发是内存管理有些,方便深切驾驭;Redis部分,能够多做一些扑朔迷离的数据结构的接纳(zset来做排行榜排序操作/事务处理用来有限支撑原子性在秒杀类场景应用之类的应用操作);多关系
aof等联合机制的上学生运动用,设计1个高可用的Redis应用架构和集群;提出能够深深的求学一下Redis的源码,把在第一品级积累的学问都足以行使
上,越发能够阅读一下席卷宗旨事件管理、内部存款和储蓄器管理、内部基本数据结构等充足学习理解一下。要是兴趣允许,能够成为二个Redis方面丰盛规范的使用者。

其次等级:升高等级 (中级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_Bootstrap,trx_commit等),也领略那么些选用配置成为多少值合适;此外也通晓一些新鲜的配置选项,比如  知道
如何搭建mysql主从同步的条件,知道各类binlog_format的区分;知道MySQL的属性追查,包含slow_log/explain等,还是能够知情基本的目录建立处理等知识;原理方面精晓基本的MySQL的架构(Server+存储引擎),知道基本的InnoDB/MyISAM索引存款和储蓄结构
和见仁见智(聚簇索引,B树);知道基本的InnoDB事务处理体制;精晓当先3/6MySQL很是情形的处理方案(只怕掌握何地找随处理方案)。条件允许的景况,提议掌握一下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
的政工、路虎极光DB、AOF等体制更好

5.  PHP:

除却第①等级的能力,安装配备方面能够自由安装PHP和各样第1方扩展的编写翻译安装配备;驾驭php-fpm的超越四分之二配置选项和意义(如
max_requests/max_children/request_terminate_timeout之类的熏陶属性的安顿),知道mod_php
/fastcgi的界别;在PHP方面已经能够熟谙各类基础技术,还包括种种深远些的PHP,包蕴对PHP面向对象的中肯领悟/SPL/语法层面包车型地铁奇特本性比如反射之类的;在框架方面曾经阅读过至少1个之上常规PHP MVC框架的代码了,知道基本PHP框架之中贯彻机制和统一筹划思想;在PHP开发中已经能够熟稔运用正规的 设计方式 来
应用开发(抽象工厂/单例/观察者/命令链/策略/适配器 等形式);提出开发自个儿的PHP MVC框架来尽量让开发自由化,让祥和深入理解MVC形式,
也让投机能够在业务连串花费里相当慢升高;熟识PHP的各个代码优化方法,驾驭超过58%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.  系统规划:

能够统一筹划超过5/10十分的小非常的大系统的网站框架结构、数据库、基本PHP框架选型;品质测试排查处理等;能够做到接近:浏览
器 -> CDN(Squid) -> Nginx+PHP -> 缓存 -> 数据库 结构网站的宗旨安插开发爱惜;能够支撑
每一天数百万到相对流量基本网站的付出爱戴工作;

根据摸底的不少PHP/LNMP程序员的开拓进取轨迹,结合个人经历认知,抽象出过多程序员对现在的蔓延,尤其对技术学习的盲目和慌张,不难梳理了那一个每种阶段PHP程序员的技能须求,来赞助广大PHP程序做相比设定学习成才目的。

 原文自:http://www.php100.com/html/it/chengxuyuan/2016/0602/9014.html

正文遵照近年来主流技术做了贰个着力的梳理,整个是只要PHP程序员不是基础卓殊踏实的情景进行的设定,并且有着设定都11分现实显明清晰,大概会令人觉着不适,请知情仅代表一家之辞。(以往技术转移不在切磋范围)

[导读] 依据摸底的好多PHP
LNMP程序员的开拓进取轨迹,结合个人经验认知,抽象出许多程序员对前途的蔓延,特别对技术学习的盲目和心慌意乱,不难梳理了这么些每种阶段PHP程序员的技艺须求,来帮衬众多PHP程序做相比设定学习成长目的。

首先阶段:基础阶段(基础PHP程序员)

第三:把LNMP搞熟习(主题是设置配置基本操作)

指标:能够形成大旨的LNMP系统装置,简单陈设维护;能够做为主的简约系统的PHP开发;能够在PHP中型系统中支持某些PHP作用模块的支出。

岁月:完费用阶段的光阴仁同一视,有的成长快6个月一年就过了,成长慢的两三年也有。

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五个引擎的两样
配置选项;知道基本的四个引擎的差异和甄选方面包车型大巴差别;能够纯手工业编写翻译搭建3个MySQL数据库并且配备好编码等正规稳定运转;核心主旨是力所能及搭建三个可
运营的MySQL数据库。

4. PHP:

主导语法数组、字符串、数据库、XML、Socket、GD/ImageMgk图片处理等等;熟知种种跟MySQL操作链接的api(mysql
/mysqli/PDO),知道种种编码难点的消除;知道健康纯熟运用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf
等);理解基本MVC的运转搭飞机制和怎么这么做,稍微领悟不一致的PHP框架之间的不同;可以急迅学习3个 MVC框架 。能够精通开发工程中的文件目录组织,有大旨的不错的代码结构清劲风骨,能够成功小系统的付出和中等系统中有些模块的开发工作。

5. 前端:

如若基准时间允许,可以确切学习下 HTML/CSS/JS 等息息相关文化,知道哪些web标准,div+css的web/wap页面情势,知道
HTML5和HTML4的分歧;理解一些着力的前端只是和JS框架(jQuery之类的);通晓部分宗旨的JavaScript编制程序知识;(本项不是必须
项,若是有时间,稍微了解一下是足以的,可是不提议视作第2,除非个人有肯定兴趣)

6. 系统规划:

可见成功小型系统的主干布置,包蕴不难的数据库设计,可以形成主旨的:浏览器 -> Nginx+PHP -> 数据库 架构的筹划开发工作;能够匡助每日几100000到数百万流量网站的支付珍重工作;

相关文章