当前位置: 移动技术网 > IT编程>开发语言>PHP > PHP程序员的技术成长规划 第二阶段:提高阶段

PHP程序员的技术成长规划 第二阶段:提高阶段

2019年03月01日  | 移动技术网IT编程  | 我要评论

第二阶段:提高阶段 (中级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引擎/扩展基本工作机制);推荐php视频教程

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 -> 缓存 -> 数据库 结构网站的基本设计开发维护;能够支撑每天数百万到千万流量基本网站的开发维护工作;

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网