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。

 

原文地址 : https://www.zhihu.com/question/23486344

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值