饭饱饱 發表於 2019-6-2 10:09:00

PHP技术栈

<p>本文旨在给要学习 PHP 的新手一个大概的认知轮廓,在心里有个学习的结构,有的放矢,避免走太多弯路。大神请忽略。</p>
<h2 id="入门阶段">入门阶段</h2>
<h3 id="预备知识">预备知识</h3>
<p>1、掌握基本HTML、JS、CSS语法;熟悉 Bootstrap。</p>
<p>参考:<br>
https://www.runoob.com/html/html-tutorial.html<br>
https://www.liaoxuefeng.com/wiki/1022910821149312<br>
https://www.runoob.com/css/css-tutorial.html</p>
<blockquote>
<p>验收最低标准:模仿写出jd.com或者vip.com首页第一屏内容。</p>
</blockquote>
<p>2、熟悉Linux命令行<br>
熟悉常用发行版系统(CentOS、Ubuntu)安装<br>
熟悉常用命令行操作,包括文件管理、用户管理、权限管理、防火墙管理等<br>
熟悉VIM使用</p>
<blockquote>
<p>验收最低标准:掌握lnmp环境搭建。</p>
</blockquote>
<h3 id="php基础">PHP基础</h3>
<p>掌握PHP基础语法、文件上传、cookie、Session、JSON。<br>
掌握MySQL数据库连接:pdo使用。<br>
掌握redis连接及简单应用。<br>
掌握命名空间。<br>
掌握面向对象编程思想。</p>
<p>参考:<br>
https://www.runoob.com/php/php-tutorial.html</p>
<h3 id="学习框架">学习框架</h3>
<p>学会使用ThinkPHP框架。主要是该框架在国内使用普及率太高了。不建议使用Laravel入门,因为该框架使用了较多的语法糖、第三方库,对新手可能有难度。</p>
<blockquote>
<p>验收最低标准:可以使用ThinkPHP最新版作为入手框架,写出一个简单的博客。页面简单写就行。数据之间使用TP的 display 渲染到页面。</p>
</blockquote>
<h3 id="学习写接口">学习写接口</h3>
<p>学会 <strong>Charles</strong> 抓包,看豆瓣的接口返回的数据。<br>
学会写接口(GET、POST)的就行。<br>
学会使用 <strong>POSTMAN</strong>。</p>
<blockquote>
<p>验收标最低准:把上面的博客项目改成前后端分离的,先写完接口(最好有文档),再在页面里使用ajax调用接口数据。</p>
</blockquote>
<p>至此,你已经入门了。如果需要继续往下,还要学习。</p>
<h2 id="第二阶段">第二阶段</h2>
<h3 id="php">PHP</h3>
<p>使用 composer 安装PHP第三方库<br>
对于PHP断点调试非常熟悉<br>
学习常用PHP扩展<br>
使用 SPL<br>
掌握 PSR 规范<br>
掌握反射的使用<br>
掌握设计模式<br>
熟练使用常用框架。<br>
了解php和php-fpm的大部分配置选项和含义。<br>
熟悉HTTP协议。<br>
熟悉正则表达式。</p>
<h3 id="mysql">MYSQL</h3>
<p>熟悉MYSQL优化的一些技巧,例如MySQL的性能追查,包括slow_log/explain等;对于order by、limit、like等一些坑能避开;能够熟练使用常用的索引;对于表结构创建选用哪种数据类型做到胸有成竹等等。<br>
熟悉常用的配置,知道如何调优。<br>
熟练配置主从。</p>
<h3 id="nosql">NOSQL</h3>
<p>掌握Redis使用:对于常用数据结构的经典使用场景非常熟悉;了解Redis的事务、RDB、AOF等机制。<br>
掌握memcache的使用,知道与redis的区别。<br>
了解一下MongoDB。</p>
<h3 id="linux">Linux</h3>
<p>熟悉常用文本命令:例如wc、awk、split、diff、grep、sed等。<br>
熟悉sort、uniq的使用。<br>
熟练掌握ps、netstat、top等命令使用。<br>
熟练使用Supervisor。<br>
熟悉如何编写shell脚本。<br>
能够理解Nginx的配置的含义。</p>
<h2 id="第三阶段">第三阶段</h2>
<h3 id="php-1">PHP</h3>
<p>该阶段PHP已经非常熟悉了,拥有快速开发项目、快速解决BUG的能力。代码遵循psr规范、稳定性很高。<br>
熟悉消息队列使用,在很多场景合适的选择消息队列进行异步解耦。<br>
熟悉如何使用 Elasticsearch 代替MYSQL的全文搜索功能。<br>
熟悉多进程编程。<br>
熟悉socket编程,对于网络IO模型有一定的认知,熟悉多路复用(select/poll/epoll)技术。<br>
熟悉swoole框架,能应用于项目上。<br>
不限制于框架本身,任何框架一天内快速入手。<br>
对php的工作机制熟悉,熟悉php-fpm生命周期。<br>
能够知道PHP相对于c等强类型语言性能为什么会慢。<br>
对于PHP内部的实现原理有一定的认知,例如变量的实现、zend引擎的了解。<br>
对于PHP的扩展有一定的认知,可以编写简单的扩展。</p>
<h3 id="mysql-1">MYSQL</h3>
<p>熟悉大批量的数据导入导出。对于线上大表操作可能带来的风险有预知。<br>
熟悉分库分表。<br>
对主从延迟能有效解决。<br>
对于MySQL内置的一些函数能够熟练使用,熟悉触发器、存储过程的使用。<br>
熟悉服务器核心性能优化选项 innodb_log_buffer_size、back_log、table_open_cache、thread_cache_size、innodb_lock_wait_timeout等。<br>
对于MySQL内部索引的实现、事务隔离机制有一定的认知。</p>
<h3 id="nosql-1">NoSQL</h3>
<p>redis常用5中数据类型之外的数据结构也要能掌握一些。如bitmap、GEO、HyperLogLog、pub/sub等。<br>
redis里的事务、管道、分布式锁能熟练使用。<br>
对于redis的服务端结构能有一定认知。<br>
熟悉redis里如何使用Lua。<br>
尝试阅读redis源码。</p>
<h3 id="linux-1">Linux</h3>
<p>对于nginx非常熟悉,能够熟练配置https、负载均衡、反向代理;能够使用 lua-nginx-module。<br>
对awk/sed 等应用已经如火纯青,能够随意操作控制处理文本统计分析各种复杂格式的数据。<br>
对于tcpdump、gdb、ltrace、strace、lsof等熟练使用。</p>
<h3 id="其它">其它</h3>
<p>熟悉Linux应用编程:熟悉makefile使用;熟悉进程、信号、I/O知识;对于C语言有一定的了解。<br>
熟练elk。<br>
对于其它语言(例如java、c、golang)、其它领域(大数据)有一定的认知。<br>
熟悉RPC、微服务架构。<br>
能够支持对于千万级流量网站的正常开发维护工作。</p>
<h2 id="结束语">结束语</h2>
<p>技术无止境,未来有更多可能。</p>
<blockquote>
<p>本文首发于公众号"飞鸿影的博客(fhyblog)",欢迎关注。<br>
<img src="https://img2018.cnblogs.com/blog/663847/201906/663847-20190602100816680-2094453665.png" alt="" loading="lazy"></p>
</blockquote>


</div>
<div id="MySignature" role="contentinfo">
    (本文完)
<br><br>


欢迎关注公众号"飞鸿影记(fhyblog)",探寻物件背后的逻辑,记录生活真实的影子。
<div style="text-align: center"><span style="color: #808000"><img src="https://images2015.cnblogs.com/blog/663847/201703/663847-20170331215930477-1406562582.jpg" alt="" width="250" height="250"></span></div>


<div>
<p><strong>作者:飞鸿影</strong></p>
<p><strong>出处:http://52fhy.cnblogs.com/</strong></p>
</div>

<hr>

<p style="border: silver 1px dashed; padding: 8px 5px; font-weight: bold">版权申明:没有标明转载或特殊申明均为作者原创。本文采用以下协议进行授权,自由转载 - 非商用 - 非衍生 - 保持署名 | Creative Commons BY-NC-ND 3.0,转载请注明作者及出处。</p>

<hr>


<div style="text-align: center;display:none"><span style="color: #808000"><img src="https://images2018.cnblogs.com/blog/663847/201805/663847-20180515232241445-706573186.png" alt="" width="250" height="250"></span></div><br><br>
来源:https://www.cnblogs.com/52fhy/p/10962068.html
頁: [1]
查看完整版本: PHP技术栈