仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2010|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页编程之提拔PHP速度全攻略

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在一个团队之中或者说是在一个公司的工作岗位上,需要注重团队之间的交流合作;在学习或工作上都要端正自己的态度,要以认真的态度来对每件事,这样才能让自己更快的投入、更快的学习,而不至于浪费自己的时间。攻略|速度   PHP的长处之一是速度很快,关于普通的网站使用,可以说是已足够了。不外假如站点的会见量很高、带宽窄或其它的要素令办事器发生功能瓶颈的时分,你能够得想一想其它的举措来进一步进步PHP的速度了。这篇文章将从几个方面引见若何做到这一点,从而令用户阅读的时分加倍“爽”。

代码优化

  在这里其实不想再次告知你若何写更洁净的代码,这一点我想每一个人都清晰,在需求速度的时分,你能够已在PHP源代码的优化下面做了很多的任务,这里所提出的是,这个烦琐的任务可以交由其它东西来完成。这就是Zend Optimizer,此法式可以从Zend Technologies的网站(http://www.zend.com/)收费失掉。它的道理很复杂,经由过程检测Zend引擎发生的两头代码,而且优化它来失掉更高的履行速度。我以为优化代码是一项颇烦琐的任务,并且优化后的代码能够变得难以了解,特别是当你放下该PHP法式一段工夫后,俄然间客户请求你做一些修正时,能够你本人也不懂了;-)。因而我建议你在PHP的源代码较为庞杂的时分,用Zend Optimizer来做这个优化的任务,优点是它不会令你的代码变得庞杂难明。

  装置Zend Optimizer长短常复杂的。只需依据你利用的平台,下载相干的预编译库,而且在你的php.ini中到场两行,从头启动你的web办事器就好了!

zend_optimizer.optimization_level=15
zend_extension="/path/to/ZendOptimizer.so"
zend_loader.enable=Off

  你能够有点奇异,不是说两行吗,怎样酿成三行了。不外第三行是可选的,看来制止这个zend_loader将会令优化的速度更快,因而无妨在你的php.ini文件中多加这一行。要注重的是:只要在你不利用Zend Encoder Runtime的时分,才可以制止zend_loader,关于Zend Encoder Runtime,还会鄙人文提到。

要更快吗?利用cache(缓冲)吧

  假如你的PHP使用还需求更快的速度,下一个举措是缓冲。要完成这一点,有几种分歧的体例。我本人就试用过Zend Cache(评测版本),APC和Afterburner Cache。

  以上提到的都是“缓冲模块”。它们的道理都差不多,在php文件被初次恳求的时分,经由过程将你的PHP源代码的两头代码存储在web办事器的内存中,关于今后一样的恳求,都直接供应内存中的“编译”版本。因为它可以令磁盘的会见到达最小化,因而这个办法的确可以极大地进步PHP的功能。更加便利的是,当你的PHP源代码修正时,缓冲的模块可以发觉到这些变更,而且从头载入一样,因而你不用忧虑客户失掉的是旧版本的法式。这些缓冲的模块的确不错,然而我应当选用哪种呢?上面分离引见一下:

  Zend Cache是Zend Technologies的一个贸易化的产物(它也是收费为咱们供应PHP引擎和Zend Optimizer的公司)。它的确不错。在初次运转后,你可以分明发觉到PHP的速度失掉了很大的进步,办事器的余暇资本也更多了。弱点是你要付费购置它,但就性价比来讲,仍是十分值得的。

  Afterburner Cache是Bware Technologies(http://bwcache.bware.it/)供应的收费缓冲模块。以后还只是beta版,它所做的任务看来与Zend Cache差不多,不外功能的进步就比不上Zend Cache,并且现有的版本不克不及和Zend Optimizer一同任务,不外它是收费的。

  APC(Alternative PHP Cache)是由Community Connect(http://apc.communityconnect.com/)供应的另外一个收费模块。它的任务很不乱,速度也有很多的进步,要注重的是,我还没有找到一个官方的测试数据,这些只是在我的使用上作测试,因而不克不及下一个结论。
Web内容的紧缩(令你客户用起来更“爽”)

  经由以上两个的办法,信任你的PHP使用的功能已失掉了很大的进步,如今该从另外一个方面来思索了:下载速度。假如你的使用只是在公司内跑,一切的客户都利用100Mb/s的以太网毗连到办事器,这能够不是一个成绩,然而假如你的客户中有利用慢速的modem毗连的,你就要思索利用内容紧缩这个办法了。依据IETF的标准,大多半的阅读器都撑持gzip的内容紧缩。这意味着你在将web的内容发给客户的阅读器前,可以先利用gzip停止紧缩,阅读器在吸收的时分就会主动解压数据,而且令用户看到本来的页面。一样,紧缩web页面的内容也有几个分歧的办法。

  mod_gzip是Remote Communications(http://www.phpbuilder.com/columns/www.remotecommunications.com)收费供应的一个Apache模块,它可以紧缩静态的web页面。它任务得很好,你只需求将它和apache一同编译就好了(或将它作为一个DSO利用)。Remotecommunications的人说它还可以紧缩静态的内容,包含mod_php, mod_perl等。不外我测验考试了一下,看来其实不行。我在mod_gzip的邮件列表中懂得到,这个bug将鄙人一个版本中修改(我想应当是1.3.14.6f版本)。不外你依然可以用它作静态内容的紧缩。

  不外咱们还想紧缩静态的内容,因而咱们必需找别的的举措。一个举措是利用class.gzip encode.php(http://leknor.com/code/),只需在你的PHP剧本中的开首和开头挪用这个PHP类,就能够紧缩你的页面内容。假如全部站点都需求如许的紧缩,你可以在你的php.ini文件中的auto_prepend和auto_append中挪用这些函数。它任务得很好,不外在负载很重的站点上,它分明会带来一点的体系开支。要具体懂得它是若何任务的,可以看一下它的类代码(你最少需求在编译PHP时到场zlib撑持)。作者在外面的申明也十分具体,你可以失掉任何需求懂得的器材。

  在比来,我也看到了一篇关于PHP输入缓冲的文章。它说的是PHP4.0.4推出了一种新的输入缓冲的处置手腕--ob_gzhandler,它的感化和下面引见的类不异,但区分是你只需在你的php.ini中利用以下的句法就好了:

output_handler = ob_gzhandler ;

  如许将激活PHP的输入缓冲功效,而且紧缩一切它发送的器材。出于某些出格的缘由,假如你不想在这里设置的话,只在需求的中央才改动这个默许设置的话(不紧缩),只需在需求紧缩的PHP源码目次中,修正一下.htaccess文件就好了,利用的句法以下:

php_value output_handler ob_gzhandler

... 或直接在你的PHP代码中挪用它,以上面的体例:

ob_start("ob_gzhandler");

  这个输入缓冲处置的办法很好,而且不会为办事器带来额定的体系开支。我非常建议你利用这类办法。它的改动可以用以下的例子申明,假如客户利用的是28.8K的modem的话,经由这个处置,他将会以为俄然间换成了一个ISDN接入一样。要注重的一点是:Netscape Communicator其实不撑持图像的紧缩,所以将显示不出来。因而除非你的客户全体利用Internet Explorer,不然你必需制止紧缩jpeg和gif图像。其它文件的紧缩应当没有成绩,然而我建议你最好测试一下,出格是阅读器利用了不罕见的插件或是少人用的阅读器。

其它有效的器材...

  Zend Technologies的在线商铺在往年1月24守旧了,而且售卖一些与PHP相干的风趣产物。包含后面提到的Zend Cache,Zend Encoder(复杂说来,是PHP代码的编译器,可以发生编译的类,如许你就能够售卖给顾客而不必忧虑泄漏源代码。在需求运转这些类的web办事器上,将要利用Zend Encoder Runtime来解码),Zend Ide(一个为PHP而设的集成化开辟情况,带有良多壮大的功能),还无为PHP开辟者供应的撑持办事。

结论

  利用这篇文章提到的手艺,你将可以极大地进步站点的功能,不外请注重以下几点:

1.瓶颈也许不在PHP,你需求考查使用中的每一个对象(例如数据库)
2.一个web办事器的功能都是无限制的,因而,不要以为功能欠好就是PHP的缘由,也多是会见量很大,你的办事器需求晋级了,或思索利用负载平衡的体系(将会花良多钱)
3.不要以为内容紧缩不主要,在100Mb/s的局域网中,你的PHP使用也许功能很好,但要思索到利用慢速modem的用户。

  大家如果能懂得“熟能生巧”的道理也就明白了这并不是浪费时间,同时这也可以减轻板主的负担,让他们有时间去处理更难的问题。
老尸 该用户已被删除
沙发
发表于 2015-2-4 11:54:21 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
海妖 该用户已被删除
板凳
发表于 2015-2-9 22:27:33 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-10 21:38:29 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
谁可相欹 该用户已被删除
5#
发表于 2015-2-21 20:57:07 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
不帅 该用户已被删除
6#
发表于 2015-3-6 21:32:13 | 只看该作者
爱上php,他也会爱上你。
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-12 11:58:37 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
再现理想 该用户已被删除
8#
发表于 2015-3-19 21:51:15 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
爱飞 该用户已被删除
9#
发表于 2015-3-24 20:48:50 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
透明 该用户已被删除
10#
发表于 2015-4-4 23:47:54 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
小妖女 该用户已被删除
11#
发表于 2015-4-12 15:30:15 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
莫相离 该用户已被删除
12#
发表于 2015-4-21 00:50:16 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
愤怒的大鸟 该用户已被删除
13#
发表于 2015-4-21 20:10:49 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
精灵巫婆 该用户已被删除
14#
 楼主| 发表于 2015-5-1 03:08:50 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
15#
发表于 2015-5-11 00:02:56 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
变相怪杰 该用户已被删除
16#
发表于 2015-5-11 00:13:40 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
简单生活 该用户已被删除
17#
发表于 2015-6-14 07:00:27 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
若相依 该用户已被删除
18#
发表于 2015-6-14 18:53:45 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
灵魂腐蚀 该用户已被删除
19#
发表于 2015-7-24 04:06:54 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
山那边是海 该用户已被删除
20#
发表于 2015-9-26 12:45:21 | 只看该作者
爱上php,他也会爱上你。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表