Heim  >  Artikel  >  Backend-Entwicklung  >  php知识必备

php知识必备

WBOY
WBOYOriginal
2016-06-23 14:30:291082Durchsuche

最流行的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

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:php 缓存处理Nächster Artikel:PHP获取checkbox值