仓酷云

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

[学习教程] PHP网页编程之浅谈若何进步PHP的速度

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:33:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
当然你可以把你最基本的功能放出来的时候就放出来,比如放到论坛上,让大家都参与,      利用PHP的最大1个优势就是速度快。普通情形下,PHP老是具有足够的速度撑持Web内容静态生成,很多时分乃至没法找出比它更快的办法。但是,当面临复杂的会见量、高负荷的使用、无限的带宽,和其他各类带来功能瓶颈的要素时,就需求思索如何进步PHP的功能了。
    1、代码优化
    代码优化不单单是写出洁净和明晰的代码,而是对代码停止必定的简化。可使用Zend Optimizer来主动匡助完成这些冗杂的任务。Zend Optimizer可以从Zend Technologies的网站http://www.zend.com/收费失掉,但必需赞同它的允许商定,由于它不是以GPL体例刊行的。它的道理很复杂,即经由过程检测Zend引擎发生的两头代码,并对它停止优化,从而取得更高的履行速度。
    在利用了Zend Optimizer后,庞杂的PHP源法式的履行效力即刻会失掉明显进步,弱点是优化后的代码可读性下落,给代码修正带来坚苦。
    Zend Optimizer的装置办法十分复杂,只需依据用户利用的平台,下载相干的预编译版本,把上面2行代码到场到php.ini文件中,从头启动Web 办事器就好了:
   
    zend_optimizer.optimization_level=15
    zend_extension=″/path/to/ZendOptimizer.so″
    zend_loader.enable=Off
   
    额定增添的第三行代码是可选的,由于禁用zend_loader将会使优化速度更快。需求注重的是,只要在不利用Zend Encoder Runtime的时分,才可以禁用zend_loader。
    2、利用缓存
    假如PHP法式的范围很大,那末进步速度的举措就是利用缓存。如今已有很多缓存计划可供选择,个中包含Zend Cache、APC和Afterburner Cache。
    下面这几种都是“缓存模块”(caching modules)。第一次挪用PHP文件时,缓存模块从PHP源代码生成一些两头代码,并把这些两头代码存储在Web办事器的内存中。今后再挪用这些文件时,就能够直接利用内存中“编译”过的代码。这类办法的确可以改良使用的功能,由于它使得磁盘会见量减低到了起码的水平(代码已读取息争析),代码直接在内存中运转,使得办事器呼应恳求的速度大大进步。
    固然,缓存模块还会监督PHP源文件的变更,需要时会从头缓存页面,从而避免用户失掉的页面仍然由过时的PHP代码生成。因为缓存模块可以分明地下降办事器的负载,进步PHP使用的呼应效力,因而它们十分合适于负载较大的网站利用。
    Zend Cache是Zend Technologies公司开辟的贸易软件。在第一次运转后,PHP页面的运转速度立即会有很大的进步,办事器的余暇资本也更多了。弱点是它不是收费的,但性价比仍是很高的。
    Afterburner Cache是Bware Technologies公司开辟的收费缓存模块。功效与Zend Cache根基一样,但进步功能方面比不上Zend Cache。
    APC(Alternative PHP Cache)是由Community Connect公司开辟的另外一种收费缓存模块,今朝版本是2.0.4,可以从http://pecl.php.net/package/APC取得。关于产物使用来讲,它的功能很不乱,并且也能在很大水平上进步呼应恳求的速度。
    3、紧缩网页内容
    影响站点的会见速度还有1个主要要素,那就是下载速度。处理的举措就是紧缩网页内容。关于纯文本内容而言,HTTP紧缩手艺可紧缩至原巨细的40%以下,从而供应60%以上的数据传输勤俭。固然Web办事器会由于紧缩招致CPU占用的稍微上升,但可以勤俭大批用于传输的收集IO。
    依据IETF标准,大局部阅读器都撑持利用gzip紧缩算法停止内容紧缩。也就是说,可以先用gzip紧缩网页内容,然后发送到客户端阅读器,阅读器在吸收的时分会主动解压数据,再显示页面。这个进程对用户来讲,是完整通明的。一样,紧缩Web页面的内容也有分歧的办法。
    Mod_gzip是1种开放源代码的、尺度的Apache模块,也叫互联网内容减速模块。可以将它和Apache一同编译,也能够作为DSO利用。相对通俗的阅读进程,它可以节俭40%摆布的流量。Mod_gzip不但可以紧缩静态的内容,如HTML、XML,并且对静态生成的,包含SQL、Java、WML、VRML等发生的内容,在办事器端停止及时紧缩并传输,其紧缩效力惊人,普通都为60%~85%。
    紧缩静态网页的内容,还可使用class.gzip来对.php文件编码,class.gzip经由过程在PHP剧本的开首和开头挪用它的一些函数来紧缩网页内容。假如全部站点都需求如许的紧缩,可以在php.ini文件中的auto_prepend和auto_append中挪用这些函数,然而会占用必定的体系开支。
    PHP4.0.4推出了1种新的输入缓冲的处置手腕—ob_gzhandler,它的感化和class.gzip完整一样,区分是可以直接把它加到php.ini 文件中,语法以下:
   
    output_handler = ob_gzhandler;
   
    如许将激活PHP的输入缓冲功效,并在发送内容行进行紧缩。假如不想在这里设置,只在需求的中央才改动这个默许设置(不紧缩),只需在需求紧缩的PHP源法式目次中,修正一下.htaccess文件就好了,语法以下:
   
    php_value output_handler ob_gzhandler
   
    或直接在PHP代码中挪用它:
   
    ob_start(″ob_gzhandler″);
   
    输入缓冲的后果的确很幻想,而且不会为办事器带来额定的体系开支。要注重的一点是Netscape Communicator不撑持图象的紧缩。因而除非晓得会见者都利用Internet Explorer,不然必需制止紧缩jpeg和gif图像。
    4 其它技能
    在编程时,利用一些小技能也能够加速PHP的运转速度:
    (1)用i+=1取代i=i+1,既合适c/c++的习气,效力绝对还更高。
    (2)尽量利用PHP外部函数。
    (3)能利用单引号字符串时,尽可能利用单引号字符串。单引号字符串的效力要高于双引号字符串。
    (4)用foreach取代while遍历数组,foreach的效力分明高于while轮回,并且不需求挪用reset函数。
怎么样出来了吧,怎么样自己也可以写出php程序了,虽然离职业和专业的人还有很远,但是好的开始是成功的一半。这个时候改怎么做了呢。现在就是拿1本高手推荐的书,重头到尾读1遍,我说的这个读是自己看。
蒙在股里 该用户已被删除
沙发
发表于 2015-2-4 02:05:59 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
飘灵儿 该用户已被删除
板凳
发表于 2015-2-5 12:29:31 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
兰色精灵 该用户已被删除
地板
发表于 2015-2-8 11:00:43 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
精灵巫婆 该用户已被删除
5#
发表于 2015-2-25 09:17:10 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
因胸联盟 该用户已被删除
6#
发表于 2015-3-7 18:51:42 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
金色的骷髅 该用户已被删除
7#
发表于 2015-3-15 11:34:57 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-20 03:34:54 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
海妖 该用户已被删除
9#
发表于 2015-3-25 10:26:46 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
冷月葬花魂 该用户已被删除
10#
发表于 2015-3-30 11:09:56 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
再见西城 该用户已被删除
11#
发表于 2015-4-1 12:10:16 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
变相怪杰 该用户已被删除
12#
发表于 2015-4-2 06:21:14 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
山那边是海 该用户已被删除
13#
发表于 2015-4-4 13:52:16 | 只看该作者
实践是检验自己会不会的真理。
老尸 该用户已被删除
14#
发表于 2015-4-11 11:45:30 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
透明 该用户已被删除
15#
发表于 2015-4-11 17:52:44 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
简单生活 该用户已被删除
16#
发表于 2015-4-21 22:10:33 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
小女巫 该用户已被删除
17#
发表于 2015-4-22 22:28:19 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
小魔女 该用户已被删除
18#
发表于 2015-5-1 19:10:42 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
小妖女 该用户已被删除
19#
发表于 2015-5-8 12:58:56 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-16 11:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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