蓝少个人博客

实迷途其未远,觉今是而昨非

PHP开发网站之中级学习法

日期:2016-09-08 阅读:1169 分类:学无止境 标签:Web PHP 

前两天在网上看到一个段子,让我惊呆了很久。大意是这样的,网上有人问了一个问题:

问:不知道大家有没有觉得基于python的网站如知乎、豆瓣都有卡顿的现象,请问是python的问题吗?

看到这,我们先分个类:

1、如果你是个文艺青年,了解豆瓣或知乎,你也许会告诉他肯定是豆瓣的客流量太大,或者会告诉他卡顿的最主要原因可能是他网速卡、电脑卡。

2、假设你是个程序员,那就不得了了。如果你不喜欢或不熟悉python也许你根本不会理会这个问题,如果你是python开发人员,你一定会用各种语言“拍死“问问题的作者。

3、如果你是个和提问者一样的人(具体什么样,自行体会)。那么也许你会泡杯咖啡坐下来,和作者一起探讨卡顿的问题,或许你最后的结论是,python很可能因为过时了,应该用java开发就不会卡顿了(c#也行)

这个段子最牛的地方并不是提问部分,而是作者的补充提问部分:

我认为PHP也很垃圾,facebook就是PHP做的。根本访问不了啊,性能太低下了。

见到此问题后,你一定会觉得乾坤逆转、飞流直下三千尺、法海不懂爱、白发魔女根本配不上卓一航。

好吧,以上只是一个段子和玩笑。其实一门技术或知识,最可怕的不是完全不懂,而是似懂非懂。这是我们团队开设这个“学习路线图”栏目的初衷。

继续我们的主题:

在这之前我们构建了一个PHP入门的学习路线图。你可以在我们的微信公众号中回复关键字”php路线图”,来获得第一章。

同时,今天我们来构建一个PHP中级开发者学习路线图。注意:本文稍有跳跃式,适合于有一定开发基础的人。周期大约需要2个月左右。

本次路线图主要作者:卞工(素材部分)、沈逸(文字加工)

第一步:自我定位

请您仔细看本文第一段,并自我判断一下豆瓣卡顿或facebook不能上是否真的是python的问题或者是php太垃圾。

如果您的答案是肯定的,请放弃本文阅读。我们实在编写不出适合您的路线图

第二步:PHP并不代表全部

2.1 如果您正在公司上班。那么公司很可能只会用单一的某一种语言,但对于你来说如果公司要求用PHP,那么你对java、c#、python也要适当有所了解,至少能有个”hello world”开发经验。

2.2 开发一个网站其实需要的知识面很广很多,网站程序员也是应用级程序员最苦、最累的层面。如前台js+css、开发语言(如php、java)、数据库(mysql、sqlserver、oracle)等等

第三步:快速学习PHP开发网站的步骤

网上有很多书,大部分是PHP+Mysql开发网站的实例。譬如如何用mysql按照三范式构建表、PHP按照mvc编写一些程序模块等等。

这是基础。开发网站,大部分还是由php+mysql的来担任大拿。

所以这里建议大家看一些书和实例(虽然到后面,这些没啥太大用途)。

所以,这里随便推荐一些书。大家买便宜的、章节不罗嗦的,有个光盘的最佳。因为这种书,你看个1-2个月就不要再看了。

另外,大家买书时先看看图书目录,如果有大堆章节描述如何安装PHP、Linux等章节的,不要买,人家作者是凑字数的,怎么安装去网上搜就行。不需要google,百度知道就能帮助你。不过纵观国内各种图书,很多无节操的国产书都把PHP安装写个2-3章节来凑字数。


第四步:学好mysql是关键

数据库是关键,看书比较慢,推荐大家看视频

请移步51cto学院:《MySQL数据库视频教程》,地址:

http://edu.51cto.com/course/course_id-1612.html

选它是因为是免费的。大家跳着看,当老师讲到有些太过于理论的知识,譬如表空间、大讲特讲字段类型时请跳过,先期你只要知道int、varchar、text、bit即可

第五步:网站的一个重要内容:缓存

推荐大家学习 memcached和radius。

不需要知道这两个货的原理。能拿来用就行,如果你的网站开发过程中会被这两个货的Bug困扰,此时你已经是高手了,不用继续我们教你怎么学习了

这两个缓存工具使用google或baidu就能学会。

如果要深入,譬如集群式的memcached(基本前期用不到) ,那么可以看一些视频。譬如51cto的《Memcached集群开发视频教程》

http://edu.51cto.com/course/course_id-1277.html

这里我们不建议把memcached学习的太深。在实际项目中,我们自己也不会在超大数据级中使用memcached。

第六步:看牛人是怎么玩网站开发的

FackBook使用PHP开发的。但是大家要知道,网站开发的真正高手之处并不是在数据库端。而是在各种性能机制的设计上。

譬如缓存机制,看完第五步,你应该更深入的了解高手在构建大并发网站时的一些思路和所使用的技术框架。

看个图,这是Facebook早期的一个缓存机制

这里有两个知识点:PHP APC和memcached的区别

请大家自行google其用法,入门实在太简单,就不赘述了。有问题大家可以提出了。

从我们的经验来看,超过百万条数据的交互APC的性能远高于memecached;但是在10万条数据以下,memcached应该小胜APC。

注意:关于memcached和APC。看官方文档更适合,目前没有找到比官方文档更有性价比的书。

第七步:架构的理解和注意点

在真正的实际项目中,机制和策略远远重要于代码架构。大家不要在PHP的啥MVC架构或者其他稀奇古怪的架构上纠结太多,真没啥意思。

包括我们见过其他一些高大上公司的在大数据级的网站中,程序结构都是非常简单的,譬如

1、除了业务模块的程序专门有个文件夹,各个函数文件负责一些业务

2、用统一的PHP文件来判断哪些操作进入哪些Action来处理

3、各个页面区域的数据根据实际访问量,要么从静态文件取、要么数据库动态取、要么从缓存取,就这么简单。

4、PHP开发网站不是java或c#,不要继承、接口、封装的过甚,一来是浪费时间、二来性能不高 、三来后人很难接手、四来你根本无法保证你公司的网站明年还是否活着。

5、如果你的网站两年内每天的PV达不到20万,那么不要考虑什么分布式处理啥的。节约点时间把用户体验和内容建设上做做好。

6、mysql的表设计的简单点,字段名尽量用英文缩写,并不要超过6个字母。譬如类似:公司名_模块名_业务名_表名  这种组合的字段名请不要出现。2014年了,不是2000年大家都不懂的年代。直接users这种表名都比你用CCTV_webUsers_UserLog_user 这种表名要好(真见过这种不要脸的表名命名哦~~~)

本次路线图结束。其实PHP开发一个好的网站说起来不难,但其实很不简单。尤其是在PHP入门门槛这么低的情况,要写出一个高性能的网站除了学习、看书、看实例,更多的是实践。而且后者比前者更重要。

本次路线图预估时间,大约需要2-3个月,你会脱离菜鸟PHP程序员的外衣。


原文转自http://www.shenyisyn.org/2014/08/04/5976.htm