PHP技术栈

本文旨在给要学习 PHP 的新手一个大概的认知轮廓,在内心有个学习的结构,有的放矢,避免走太多弯路。大神请忽略。php

入门阶段

预备知识

一、掌握基本HTML、JS、CSS语法;熟悉 Bootstrap。css

参考:
https://www.runoob.com/html/html-tutorial.html
https://www.liaoxuefeng.com/wiki/1022910821149312
https://www.runoob.com/css/css-tutorial.htmlhtml

验收最低标准:模仿写出jd.com或者vip.com首页第一屏内容。java

二、熟悉Linux命令行
熟悉经常使用发行版系统(CentOS、Ubuntu)安装
熟悉经常使用命令行操做,包括文件管理、用户管理、权限管理、防火墙管理等
熟悉VIM使用mysql

验收最低标准:掌握lnmp环境搭建。linux

PHP基础

掌握PHP基础语法、文件上传、cookie、Session、JSON。
掌握MySQL数据库链接:pdo使用。
掌握redis链接及简单应用。
掌握命名空间。
掌握面向对象编程思想。nginx

参考:
https://www.runoob.com/php/php-tutorial.htmlgolang

学习框架

学会使用ThinkPHP框架。主要是该框架在国内使用普及率过高了。不建议使用Laravel入门,由于该框架使用了较多的语法糖、第三方库,对新手可能有难度。ajax

验收最低标准:可使用ThinkPHP最新版做为入手框架,写出一个简单的博客。页面简单写就行。数据之间使用TP的 display 渲染到页面。正则表达式

学习写接口

学会 Charles 抓包,看豆瓣的接口返回的数据。
学会写接口(GET、POST)的就行。
学会使用 POSTMAN

验收标最低准:把上面的博客项目改为先后端分离的,先写完接口(最好有文档),再在页面里使用ajax调用接口数据。

至此,你已经入门了。若是须要继续往下,还要学习。

第二阶段

PHP

使用 composer 安装PHP第三方库
对于PHP断点调试很是熟悉
学习经常使用PHP扩展
使用 SPL
掌握 PSR 规范
掌握反射的使用
掌握设计模式
熟练使用经常使用框架。
了解php和php-fpm的大部分配置选项和含义。
熟悉HTTP协议。
熟悉正则表达式。

MYSQL

熟悉MYSQL优化的一些技巧,例如MySQL的性能追查,包括slow_log/explain等;对于order by、limit、like等一些坑能避开;可以熟练使用经常使用的索引;对于表结构建立选用哪一种数据类型作到成竹在胸等等。
熟悉经常使用的配置,知道如何调优。
熟练配置主从。

NOSQL

掌握Redis使用:对于经常使用数据结构的经典使用场景很是熟悉;了解Redis的事务、RDB、AOF等机制。
掌握memcache的使用,知道与redis的区别。
了解一下MongoDB。

Linux

熟悉经常使用文本命令:例如wc、awk、split、diff、grep、sed等。
熟悉sort、uniq的使用。
熟练掌握ps、netstat、top等命令使用。
熟练使用Supervisor。
熟悉如何编写shell脚本。
可以理解Nginx的配置的含义。

第三阶段

PHP

该阶段PHP已经很是熟悉了,拥有快速开发项目、快速解决BUG的能力。代码遵循psr规范、稳定性很高。
熟悉消息队列使用,在不少场景合适的选择消息队列进行异步解耦。
熟悉如何使用 Elasticsearch 代替MYSQL的全文搜索功能。
熟悉多进程编程。
熟悉socket编程,对于网络IO模型有必定的认知,熟悉多路复用(select/poll/epoll)技术。
熟悉swoole框架,能应用于项目上。
不限制于框架自己,任何框架一天内快速入手。
对php的工做机制熟悉,熟悉php-fpm生命周期。
可以知道PHP相对于c等强类型语言性能为何会慢。
对于PHP内部的实现原理有必定的认知,例如变量的实现、zend引擎的了解。
对于PHP的扩展有必定的认知,能够编写简单的扩展。

MYSQL

熟悉大批量的数据导入导出。对于线上大表操做可能带来的风险有预知。
熟悉分库分表。
对主从延迟能有效解决。
对于MySQL内置的一些函数可以熟练使用,熟悉触发器、存储过程的使用。
熟悉服务器核心性能优化选项 innodb_log_buffer_size、back_log、table_open_cache、thread_cache_size、innodb_lock_wait_timeout等。
对于MySQL内部索引的实现、事务隔离机制有必定的认知。

NoSQL

redis经常使用5中数据类型以外的数据结构也要能掌握一些。如bitmap、GEO、HyperLogLog、pub/sub等。
redis里的事务、管道、分布式锁能熟练使用。
对于redis的服务端结构能有必定认知。
熟悉redis里如何使用Lua。
尝试阅读redis源码。

Linux

对于nginx很是熟悉,可以熟练配置https、负载均衡、反向代理;可以使用 lua-nginx-module。
对awk/sed 等应用已经如火纯青,可以随意操做控制处理文本统计分析各类复杂格式的数据。
对于tcpdump、gdb、ltrace、strace、lsof等熟练使用。

其它

熟悉Linux应用编程:熟悉makefile使用;熟悉进程、信号、I/O知识;对于C语言有必定的了解。
熟练elk。
对于其它语言(例如java、c、golang)、其它领域(大数据)有必定的认知。
熟悉RPC、微服务架构。
可以支持对于千万级流量网站的正常开发维护工做。

结束语

技术无止境,将来有更多可能。

本文首发于公众号"飞鸿影的博客(fhyblog)",欢迎关注。

相关文章
相关标签/搜索