登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 440|回复: 0

PHP步伐员的技能发展之路

[复制链接]

12

主题

0

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2017-12-6 09:52:18 | 显示全部楼层 |阅读模式 来自 美国
dPn19Y1x315bbsPD.jpg

文章来自:公众号--步伐人生





阅读文章前先絮聒一下:群发文章第三篇为小编分享的视频教程(视频+暗码大概视频+朋侪圈),有必要的可以检察。


按照相识的许多PHP/LNMP步伐员的发展轨迹,联合个人履历领会,抽象出许多步伐员对将来的迷漫,特殊对技能学习的盲目和忙乱,简朴梳理了这个每个阶段PHP步伐员的技能要求,来资助许多PHP步伐做对照设定学习发展目的。
本文按照现在主流技能做了一个根本的梳理,整个是假设PHP步伐员不是底子非常踏实的环境举行的设定,而且全部设定都非常详细明白清楚,大概会让人以为不适,请明白仅代表一家之言。(将来技能变革不在讨论范围)


vpl5q2aLL5Nx3T43.jpg 第一阶段:底子阶段(底子PHP步伐员
yvhmK57yVd59L99Z.jpg


重点:把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 -> 数据库 架构的计划开辟工作;可以或许支持天天几十万到数百万流量网站的开辟维护工作;


Njbk62Zwu0YAooKX.jpg 第二阶段:进步阶段 (中级PHP步伐员) a5LrN5nitLv8qdSN.jpg


重点:进步针对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. 前端:
在第一阶段的底子上面,认识根本的HTTP协议(协议代码200/300/400/500,根本的HTTP交互头);条件答应,可以在深入写出轻微优雅的HTML+CSS+JavaScript,大概可以或许大抵简朴利用某些前端框架(jQuery/YUI/ExtJS/RequireJS/Bootstrap之类);假如条件答应,可以深入学习JavaScript编程,好比闭包机制、DOM处置惩罚;再深入些可以读读jQuery源码做深入学习。(本项不做重点学习,除非对前端有爱好)
体系计划:
可以或许计划大部门中型体系的网站架构、数据库、根本PHP框架选型;性能测试排查处置惩罚等;可以或许完成雷同:欣赏器 -> CDN(Squid) -> Nginx+PHP -> 缓存 -> 数据库布局网站的根本计划开辟维护;可以或许支持天天数百万到万万流量根本网站的开辟维护工作;


Xv6JMw8485Z4FoUD.jpg 第三阶段:高级阶段 (高级PHP步伐员)
JKf5b6k3NDM3m8TB.jpg



重点:除了根本的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. 前端:
深入相识HTTP协议(包罗各个过细协议特别协议代码和背后缘故原由,好比302静态文件缓存了,502是nginx背面php挂了之类的);除了之前的前端方面的各种框架应用整合本领,前端方面的学习假如有爱好可以更深入,体现情势是,可以本身开辟一些雷同jQuery的前端框架,大概开辟一个富文本编辑器之类的比力噜苏磨练JavaScript功力;
7. 其他范畴语言学习:
在底子的PHP/C/C++语言方面有根本积聚,发起在当前阶段可以实验学习差别的编程语言,看个人爱好爱好,脚本类语言可以学学Python/Ruby之类的,函数式编程语言可以试试 Lisp/Haskell/Scala/Erlang之类的,静态语言可以试试Java/Golang,数据统计分析可以相识相识R语言,假如想换个视角做后端业务,可以试试 Node.js另有前面提到的跟Nginx联合的 Nginx_Lua等。学习差别的语言重要是提拔本身的视野息争决题目本领的差别,好比会了排除了历程/线程,另有轻量级协程;好比在跨呆板通讯场景下面,Erlang的办理方案简朴的惊人;好比在不想选择C/C++的环境下,另有雷同高效的Erlang/Golang可用等等;重要是提拔视野。
8. 其他专业方向学习:
在本阶段内里,会除了根本的LNMP技能之外,会思量一些其他范畴知识的学习,这些都是可以的,看个人爱好和恒久的目的方向。现在环境可以或许选择的范畴比力多,好比、云盘算(分布式存储、分布式盘算、假造机等),呆板学习(数据发掘、模式辨认等,应用到统计、个性化保举),天然语言处置惩罚(中文分词等),搜刮引擎技能、图形图像、语音辨认等等。除了这些高大上的,也有许多偏工程方面可以学习的地方,好比高性能体系、移动开辟 (Android/IOS)、盘算机安全、嵌入式体系、硬件等方向。
9. 体系计划:
体系计划在第二阶段的底子之上,可以或许应用把握的履历技能,计划出比力复杂的中大型体系,可以或许办理大部门线上的各种复杂体系的题目,完成雷同 欣赏器 -> CDN ->负载平衡 -> 接入层 -> Nginx+PHP -> 业务缓存 -> 数据库 -> 各路复杂后端RPC交互(存储后端、逻辑后端、反作弊后端、外部服务) -> 更多后端 酱紫的复杂业务;可以或许支持天天数万万到数亿流量网站的正常开辟维护工作。


感谢关注“PHP自学中央”,一起学习的可加小编微信为挚友!记得备注哦

gqTNm3029kZ0Tk22.jpg




上一篇:十张图读懂 PHP、Python、 Ruby 三大语言的差别
下一篇:PHP+AJAX 投票器功能
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-14 21:09 , Processed in 0.099449 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表