感觉学PHP开发网站到瓶颈了,技术上不知如何突破,希望大神指点推荐几本书,谢谢!

从html小白到php,刚开始感觉php做网站挺简单的,但是到后来越感觉所学知识不够用了,网站远非留言板,登陆注册那么简单的。

目前我对这些技术的还不是很了解:

  1. 服务器运维,网站部署,技术架构

  2. php 高级技术,定时任务,队列(一直以来我都是把php当“静态”语言来用的,没人访问就是死的) composer docker Ionic phonegap

  3. mysql 事务,高级

  4. 其他数据库 nosql memcached redis mongodb

  5. css3 html5 html5新特性 html5网站 angularjs框架 React框架 requirejs CommonJS

  6. nodejs npm Grunt工具 git github

  7. 电子商务网站系统设计的知识,大并发,秒杀系统设计

  8. 搜索技术,厄需解决我目前的sql word link '%$q%'

  9. linux php环境部署,优化。Linux lamp环境优化,常用web软件环境配置,安装

  10. 设计模式,算法

以上就是我迫切想要学的东西。

我想学习web开发的一切,前端和后端,有人说如果感觉自己到了瓶颈期时,那就该看书了,希望大神给我知道一下,推荐几本书。前后端的,实战基础都可以。谢谢!

阅读 14k
11 个回答

你列的这个列表非常棒,知识面很完整,但我个人认为,你现在面临的这个瓶颈并不是书能够解决的。或者说光靠书很难解决。

想清楚学习的目的,避免为学而学

比如高并发,秒杀,架构,这些经常都是现有业务接触不到的东西,学习起来一般两种目的:要么为了应对面试,要么为了日后业务发展,需要的时候能够顶上(知识储备)。不同的目的有不同的学习手段和目标程度。比如如果为了面试,那么做到有一定了解,清楚场景、常见解决方案即可,面试的时候也不用瞎编,就说没机会接触但了解过如何如何,就是很好的回答了。如果是为了业务发展,如果当前公司很快就会发展到那个程度,那就得要到实战的地步,可以找老板沟通,老板说不定正发愁呢。

但如果你的公司离哪个场景很远,你又不打算跳槽,那就别浪费宝贵的时间,学点别的吧

实践,实践,实践!

无论你习惯看书,还是习惯视频,还是像我一样习惯面向google面向stackoverflow学习,学习唯一不变的终点永远是实践。无论你的学习目的是什么,开始之前永远都先给自己准备好实践的机会。公司需要就和老板沟通,公司不需要就自己业余开小项目,不方便的话,那就学到“了解问题点,了解常见解决方案”的程度停止

你已经具备很好的知识面,那么结合公司当下/未来的需求找到突破口应该不是难事,争取结合公司发展所需来学习是效率以及收益最高的,相信我,老板永远最喜欢那种公司需要什么技术就能跳起来说“以前我看过这个东西,有三种方案,我觉得B方案目前最适合我们公司的情况,我能带头把这个做出来”的员工

场景是王道

上面两点中我一直反复在聊场景,其实和英文很类似,英文的核心能力并不是几万的单词量,也不是多么高深的语法,而是“语感”,或者说,从场景联系到合适的表达方式,以及反过来从别人的表达中领会场景的能力。

书和视频,包括网上搜索,绝大多数都只能解决“how”的问题,但我始终认为"how"几乎是最不重要的事情,至少对于互联网技术来说,除了极端场景,99%的情况下,“how”都不是问题,不就是找最合适的那个类库看下文档,调用调试一下么。问题的关键永远是“when”和“what”,偶尔是“why”

  • how: 是怎么达成某件事情(比如怎么支撑大并发吧),这其实真的不太重要

  • when: 什么时候需要引入支撑并发的方案? 一台常见的单核8G服务器能支撑多少用户并发?怎么监视并发量从而确认是否需要扩容?常见的并发优化能有多少并发量的提升?这决定了业务成长到什么地步要考虑引入相应方案,过早优化是万恶之首

  • what: 并发问题的核心是解决什么问题? 比如一个方向是横向扩容/自动扩容,另一个方向是高并发下的数据一致性(事务和分布式事务),当然也还有单机并发优化。如果你理解了就会发现,单机优化确实重要而且是基础,但绝大多数时候远远不如前两个管用。如果你懵懵懂懂就奔着“高并发”这么个词,学了一堆单机优化的东西,可能最后派不上用

  • why: 为什么公司需要这个技术?业务和技术的结合点在哪里? 是你的公司的商业模式决定了需要靠支撑大量并发来盈利么?是公司的业务数据宝贵不容有失所以需要强大的异地容灾?还是因为公司业务无法接受当机时间过长,所以需要灾备,需要柔性高可用?当然,也不能排除“高层喜欢这个技术”这个稍稍令人丧气的理由。

合起来看,how之外的那些问题,简单地说就是场景问题,想通这个真的非常重要,只有想通这个,你的学习才是有目的,有条理,有计划,有最终成果的有效学习

最后,反感看书学习的我唯一推荐一本书,是一本最棒的学习list,有很多你没列出来却至关重要的需要学习/关注的点,《The Pragmatic Programmer》,译名《程序员修炼之道》有点俗,但错过实在可惜

附另一个回答《程序员怎样结合平时工作中的项目修炼自己的技能?》

程序猿遇到瓶颈, 看书什么的根本就没用, 最好的方法就是跳槽

1 先推荐书

服务器运维

鸟哥的Linux私房菜

git

githug - 一个用git来学习git的小游戏
类似的还有vimtutor

网站系统设计的知识,大并发,秒杀系统设计:

看几个大公司的技术博客,学习一下一线的开发人员都在做什么,就差不多了
腾讯大讲堂
腾讯全端 AlloyTeam 团队
点评美团技术团队
蘑菇街技术博客

设计模式,算法

大话设计模式
代码大全

其他方面我了解的少,欢迎补充

2 再说说遇到瓶颈怎么办

首先不要觉得自己太弱,感觉遇到瓶颈说明你还是意识到自己在某些方面不足,但是不要盲目就开始学。我的建议是:

  1. 该有的广度应该有,如果从PHP开始,那么Web、数据库、运维、架构都应该有所了解

  2. 想一想自己未来5年要做什么样的事,是一直当一个程序员吗?在一个团队里面处于什么位置的程序员呢?

  3. 想好2之后,应该对自己未来将要做的事情有持续的、深度的了解

一步步来,买书看,做项目练习,熟练使用至少两个php框架

到达瓶颈的时候要想的东西其实很简单,就是什么都不想,该做的扎扎实实的做,厚积薄发。瓶颈的原因就是不能达到薄发的标准,提高自身对技术的理解,有机会的话接触更加宽广的技术栈,尽量不要一个语言用到老,但是不是让你什么语言都用或者抛弃PHP,而是去学习其他语言的一些思想。然后在使用一些第三方技术或框架的时候尝试在不影响项目流程的情况下深入的学习一些底层的知识。

换行业把,程序员最后都会遇到工资的瓶颈。
技术再牛逼 工资也就那么多,成不了首富

看书其实用途也不大,现在市面上的书理论多于实践,如果书看看一看就能上手,那么市面上的培训班该倒闭了。

买书其实不急,关键得有项目,和环境去实践,很多东西没人探讨或者没人带你,自己研究10年跟人家做一两年的没区别,技术这东西必须有对比,才能去进步和提高,不可关起门来研究。PHP要学的东西太多,不能急于求成。

学习linux脚本,学习symfony或yii之类的全栈框架,熟悉运用云产品做大型场景的应用。

既然选择php了就放弃前端,把数据库多看看总是好的

推荐问题
宣传栏