Home > Article > Backend Development > php知识必备
最流行的PHP MVC框架
http://yp.oss.org.cn/software/show_resource.php?resource_id=742
Yii(音 易框架,我一般直接读YII) CodeIgniter(简读CI) Symfony CakePHP
MVC ,这个看百度就行,MVC在计算机界通用
http://baike.baidu.com/view/31.htm
如何提高php运行速度
http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2012/0105/9616.html
这里提到了Zend Optimizer,一般这个都不太用
Zend Cache、APC和Afterburner Cache,这几种模块缓存,APC是常用的,一般用它缓存include require的东西(开启apc功能后,这些自动的,即之后php运行到require的东西不会去读硬盘,而是读cache)
压缩网页内容,是指内容类的网站,输出的html代码很多,开启gzip减少网络传输量
代码层面的,代码复用,使用内部函数,算法好一些,逻辑简化,都能一定程度加速
提高速度,本质的找到一个功能块的性能瓶颈,针对问题做特别的优化。
比如如果mysql读取量较大,根据使用频繁程度做cache,避免多次请求mysql,分担压力。cache可以使用本地文件cache,可以使用memcache redis以及一些nosql数据库(nosql的数据库一般都是key-value数据库)
有一些很耗时的处理,可以考虑是否可以预处理,通过计划任务定时处理好存起来,使用时直接调用,而不用现计算。
还有一些耗时,但是此次请求并不直接关心结果的,可以考虑异步处理,比如把它丢给[消息队列],由另一个程序去执行相关操作,这样当前程序可以很快返回结果。
所有高并发的网站架构,都是要分布式的,即一个请求可能会由好多个机器共同分担完成,网站服务器分布,数据库分布,存储分布。
网站分布,为了增加不同地区用户访问速度,会将网站主机布到多种机房内,电信,联通,铁通,移动,海外等机房。访问的时候根据来源分配到相应的服务器上,一般同一种网络内的服务器是随机分配的,使用负载均衡器,来做调度,也可以使用DNS轮循的方式随机分配。问你负载均衡等实现细节可以不知道,提到这些词就可以了,有硬件专门做,也可以用程序来模拟实现。程序实现无非是写一个算法来随机分配。DNS轮循的要在DNS解析层做,这些是运维的事情。
网站分布了,资源请求是内部的,各机房之内通过服务器之间打通来实现高速访问,这是网络运维的事情。简单的做法是在服务器上采用双线或多线,即一台服务器有电信的IP也有网通的IP,这样不同的网络过来,请求不同的IP地址,达到更高速访问的目的。
数据库分布,mysql提供主从(master-slave)的方式,即数据库有一个主服务器,可以有许多从服务器,slave从master同步数据,网站服务器请求时从slave来查询,减轻master压力。也可以按数据业务切分,将不同的数据放在不同的服务器上,这样也会减轻数据请求的压力(但同时要访问多台数据库服务器,又增加了一些开销)。mysql的主从同步原理是binlog,通过同步主服务器的操作命令过程,来实现在从服务器上重建数据。同时这种模式也实现了读写分离,写的时候在master上写,读的时候在slave上读。防止大并发时受写入速度影响读取速度
存储分布,一些资源可以不必放在主网站上,比如js css 图片,可以放到其它机器上,我们经常会发现一些大网站的图片,可能是img1 img2 img3 static pic等域名开头的这些都是将这种资源分开的做法。同时这些静态资源,可以使用CDN来加速(CDN的全称是Content Delivery Network,即内容分发网络),CDN服务器可以自己建,也可以购买第三方服务
版本管理,从CVS 到SVN 以及GIT,一般要会SVN,CVS是早期使用的,现在被SVN取代,新一代的GIT现在正在崛起。
代码版本管理软件的作用是,将代码保存在服务器上,通过更新,提交两种操作,来实现代码的最终修改,这样多人合作时方便。在版本发布时,打一个tag,就将代码定格在那一时刻。你可以继续开发你的,不会干扰那个tag。也可以开多个分支,这样可以由不同的人开发多种版本,可以1.0 2.0等版本同时开发,互不影响。开发完了,也可以版本合并。
使用版本管理还有一个好处是,代码在服务器上,即使本机坏了,也不会影响大家工作成果。如果有人误操作,将代码毁了,也可以回滚。
关于这三种版本管理软件使用方法,自己百度
HTTP协议
http://www.blogjava.net/zjusuyong/articles/304788.html
重点看一下状态码,200 304 403 404 500 502,其中304是服务器设置一个静态文件失效时间,在有效期内,浏览器接到服务器端返回304状态,不再从服务器传送文件,而使用浏览器缓存。这篇文章有时间要细读,这是整个web请求的根基。很多优化的本质都是围绕这个协议进行的。包括cookie是http协议的组成部分。
两种常见保持会话的手段cookie session的区别
http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html
GET POST两种http请求的区别
http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
JSON 和 XML 这两种数据格式
http://wenku.baidu.com/view/49800b83d4d8d15abe234e83.html
这两种数据格式,通常做为第三方请求数据的返回格式,也可以是服务器向前端返回数据的格式。自己的项目多用在AJAX请求返回。
关于AJAX
http://www.w3school.com.cn/ajax/
AJAX = 异步 JavaScript 和 XML。也可以使用Json来替代XML。
然后又涉及javascript的几个框架
http://www.blogjava.net/kent/articles/202855.html
主流使用的是 jQuery,它的普遍使用是因为它使用起来很简单,容易理解
jQuery教程 http://www.w3school.com.cn/jquery/
Linux常用命令
cd ls cp rm mkdir ssh rsync wcp sudo
具体的命令不一定会考,但一定会问你会不会用linux,因为90%的互联网公司的web项目使用都是linux 或unix 做为服务器,而不是windows
Mysql的几种存储(表)引擎
http://database.51cto.com/art/201105/259232.htm
主流使用MyISAM InnoDB
InnoDB和Myisam区别
http://wenku.baidu.com/view/2630add5b9f3f90f76c61b35.html
NoSQL数据库
http://www.infoq.com/cn/news/2011/01/nosql-why
http://robbin.iteye.com/blog/524977
Redis,Tokyo Cabinet,MongoDB
Memcache也是NoSQL数据库,但是它并不是持久存储,只是放在内存中的cache
http://www.cnblogs.com/qiantuwuliang/archive/2011/03/07/1974499.html
memcache的用法
三大WEB服务器对比分析 apache lighttpd nginx
http://wenku.baidu.com/view/96095c1f227916888486d7d2.html
全文搜索的几种工具
Coreseek Sphinx Lucene
PHP的三种运行方式
http://blog.csdn.net/anljf/article/details/7086034
apache模块方式 CGI方式 FastCGI方式
PHP开发程序应该注意的42个优化准则
http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2012/0105/9617.html