乐趣区

PHP技术栈

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

入门阶段

预备知识

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

参考:
https://www.runoob.com/html/h…
https://www.liaoxuefeng.com/w…
https://www.runoob.com/css/cs…

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

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

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

PHP 基础

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

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

学习框架

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

验收最低标准:可以使用 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、微服务架构。
能够支持对于千万级流量网站的正常开发维护工作。

结束语

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

如果想快速提升 Redis、MySQL 等技能到第三阶段,请看下文《学完这些课,快速助你提升 Level》。

本文首发于公众号 ” 飞鸿影的博客(fhyblog)”,欢迎关注。博客地址:https://52fhy.cnblogs.com。

退出移动版