`
xombat
  • 浏览: 163665 次
  • 性别: Icon_minigender_1
  • 来自: 乌托邦
社区版块
存档分类
最新评论

优化php程序

阅读更多
首先我们了解一下我们的php程序是怎样执行的,首先他被编译为中间代码,然后中间代码被送入执行引擎执行,然后销毁。每个请求的中间代码在执行完之后被销毁,这样的好处在于他完全隔离了不同的请求,使内存使用率降低。但是这样的缺点也显而易见,因为他需要再重复请求一个界面的时候对一个代码连续编译两次,编译的中间代码没有一点复用性。

我们拿ZPS来说事,看他能提供什么优化功能:
  • 一, 自动优化,也就是我们的zend optimizer提供的功能,他可以对中间代码进行优化,这些优化是语言方面的,将效率低的转化为效率高的,但他的优化目标只限定在中间代码,因此不会影响你编写的源代码。这个能提高20%左右的性能。
  • 二, 代码编译缓存,就是使中间代码更有复用性。因为他会把中间代码进行缓存,下次使用的时候就不需要编译了,这个有50%到300%的性能提升。
  • 三, 动态内容缓存,也就是把php代码执行完之后生成的内容进行缓存,这个适用于幂等的请求,而且请求不会对服务器端的数据造成修改,而只是get数据内容。这个提升效果最大,但对于个性化的界面不太适合,您可以选择使用部分缓存的方式,但明显提高了复杂度。
  • 四,内容压缩:他主要是提高HTTP的传输效率,使传输量减少90%左右,但他也有牺牲,就是增加了两端(c/s)的计算量。但ZPS使用对压缩文件也进行缓存的方式来减少压缩所带来的性能影响。


另外就是细节方面的性能考虑:
  • 1.对于require和include:
  • 不是说使用上apc就一劳永逸了。
  • Include_once(),require_once()比include,require要慢,因此可以考虑将require_once()换成require().
  • 另外包含一个文件会增加许多内存使用,因此对于大的包含文件你应该考虑如何切割成多个小文件,因为opcode缓存只能优化加载时间,而不会减少内存使用大小。
  • 2.少用define ,在类中使用const变量来代替,因为据说后者可以被opcode缓存,而前者不能。
  • 3.使用C语言。很多人认为“你应该到达不到这种优化需求吧”,但是确实我在写一个推荐系统的时候遇到这个需求,如何在php中使用c来优化性能这个问题留给以后吧,等我研究明白了再贴。
  • 4.使用面向过程代替面向对象。具体原因不知道为什么。另外http://www.iteye.com/topic/143440这篇文章中提到的”php的最佳实践就是数组编程”也很有新意,大部分也是基于性能的考虑。



另外一些小的优化技巧,我这里就不说了,看下面链接。

40条优化PHP代码的小提示:
http://www.huomo.cn/archives/40_tips_for_optimizing_your_php_code.html

php效率优化
http://cnhawkwing.iteye.com/blog/69100
分享到:
评论
6 楼 xombat 2008-09-05  
引用
跨页面缓冲可以用APC、XCache啊什么的,如果想跟其他语言挂接,那就用Memcache吧,有什么不能实现的呢?!

注意是语言级别上
5 楼 yipsilon 2008-09-04  
gigix 写道
xombat 写道
gigix 写道
引用
但是,这种机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。

这句话很扯嘛

ls有什么方法能在语言级别上实现跨页面缓冲?

为什么要在语言级别上实现这种明显属于部署架构的事情?

跨页面缓冲可以用APC、XCache啊什么的,如果想跟其他语言挂接,那就用Memcache吧,有什么不能实现的呢?!
4 楼 gigix 2008-09-02  
xombat 写道
gigix 写道
引用
但是,这种机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。

这句话很扯嘛

ls有什么方法能在语言级别上实现跨页面缓冲?

为什么要在语言级别上实现这种明显属于部署架构的事情?
3 楼 xombat 2008-09-02  
gigix 写道
引用
但是,这种机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。

这句话很扯嘛

ls有什么方法能在语言级别上实现跨页面缓冲?
2 楼 gigix 2008-09-02  
引用
但是,这种机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。

这句话很扯嘛
1 楼 robbin 2008-09-02  
左轻候写的几篇PHP反思文章挺不错的:

引用
PHP却完全不是这样。作为一种纯解释型语言,PHP脚本在每次被解释时进行初始化,在解释完毕后终止运行。这种运行是互相独立的,每一次请求都会创建一个单独的进程或线程,来解释相应的页面文件。页面创建的变量和其他对象,都只在当前的页面内部可见,无法跨越页面访问。在终止运行后,页面中申请的、没有被代码显式释放的外部资源,包括内存、数据库连接、文件句柄、Socket连接等,都会被强行释放。
  也就是说,PHP无法在语言级别直接访问跨越页面的变量,也无法创建驻留内存的对象。

......

PHP这种独特的工作模型的优势在于,基本上解决了令人头疼的资源泄漏问题。Web应用的特点是大量的、短时间的并发处理,对各种资源的申请和释放工作非常频繁,很容易导致泄漏。同时,大量的动态html脚本的存在,使得追踪和调试的工作都非常困难。PHP的运行机制,以一种非常简单的方式避免了这个问题,同时也避免了将程序员带入到繁琐的缓冲池和同步等问题中去。在实践中,基于PHP的应用往往比基于Java或.NET的应用更加稳定,不会出现由于某个页面的BUG而导致整个站点崩溃的问题。(相比之下,Java或.NET应用可能因为缓冲池崩溃或其他的非法操作,而导致整个站点崩溃。)后果是,即使 PHP程序员水平不高,也无法写出使整个应用崩溃的代码。PHP脚本可以一次调用极多的资源,从而导致页面执行极为缓慢,但是执行完毕后所有的资源都会被释放,应用仍然不会崩溃。甚至即使执行了一个死循环,也会在30秒(默认时间)后因为超时而中止。从理论上来说,基于PHP的应用是不太可能崩溃的,因为它的运行机制决定它不存在常规的崩溃这个问题。在实践中,很多开发者也认为PHP是最稳定的Web应用。
  但是,这种机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。


http://www.bloggern.com/1557.html

http://www.bloggern.com/3577.html

相关推荐

    使用APC缓存优化PHP程序

    【使用APC缓存优化PHP程序】 APC(Alternative PHP Cache)是PHP的一个重要的性能优化工具,它通过缓存PHP的编译后的中间代码来提高应用程序的运行速度,减轻服务器负担。APC不仅可以提高网站的响应速度,还能降低...

    使用APC缓存优化PHP程序.rar

    本文将围绕如何使用APC缓存优化PHP程序,探讨其工作原理、安装配置、以及如何监控和调整其性能,以达到最佳的优化效果。 ## APC的工作原理 在未使用APC的情况下,PHP代码在每次请求时都需要经过解释器解析和编译,...

    PHP性能优化大全.docx

    本文主要从四个方面探讨如何优化PHP程序,包括系统调用优化、Apache配置优化、日志处理以及realpath()函数的使用。 首先,针对系统调用过多的问题,可以使用strace工具来追踪Apache进程的系统调用。通过`apache2ctl...

    PHP性能优化方式

    2. **网络请求优化**:如果PHP程序涉及大量的网络请求,如API调用,使用批处理或异步处理可以显著提高性能。同时,启用HTTP压缩(如gzip)可以减少数据传输量。 3. **接口输出的优化**:对于对外提供的API,尽量...

    让你的程序跑的更快,php代码优化

    本文将详细介绍一系列有效的PHP代码优化技巧,帮助你的PHP程序更加高效地运行。 #### 1. 避免不必要的字符串操作 在处理字符串时,尽量避免使用`echo`和`print`进行多次输出,因为这会导致额外的缓冲区操作。如果...

    PHP优化,代码优化

    ### PHP优化,代码优化 ...这些优化策略涵盖了从简单代码调整到复杂系统配置的各个方面,对于提高PHP应用程序的性能具有重要意义。开发者可以根据具体场景灵活应用这些技巧,不断优化代码,提升用户体验。

    基于PHP的PT php小说搜索小偷优化程序.zip

    "基于PHP的PT php小说搜索小偷优化程序"是一个使用PHP编程语言开发的特定应用,主要用于搜索引擎优化(SEO)针对小说类网站。"PT"可能指的是"Private Tracker",一种用于共享文件的专用追踪系统,通常在Torrent网络...

    PHP底层的运行机制与原理.docx

    通过优化 PHP 程序,可以提高程序的性能和效率。 PHP 底层的运行机制与原理是通过四层体系、SAPI、扩展机制、内存管理和优化等方面来实现的。了解 PHP 底层实现的目的是什么,动态语言要像用好首先得了解它,内存...

    PHP性能优化

    【PHP性能优化】是提升PHP应用运行效率的关键环节,它涉及...总的来说,PHP性能优化涉及的方面广泛,需要综合考虑代码质量、缓存策略、服务器配置和数据库管理等多个因素,通过系统性的优化,才能实现程序的高效运行。

    优化PHP程序的方法小结

    以下是一些针对PHP程序优化的关键点,可以帮助开发者提高代码运行速度并降低资源消耗。 1. **静态方法声明**:如果一个方法不需要实例化对象就能调用,应将其声明为静态方法。这样可以避免创建对象实例,从而显著...

    mysql性能优化PHP高级开发工程师架构设计

    优化PHP的内存管理,避免内存泄漏,也是提升整体性能的关键。 架构设计上,遵循分层、模块化原则,使系统易于维护和扩展。采用微服务架构,将复杂应用拆分为多个独立的服务,可以更好地实现水平扩展,提高系统的可...

    win2012使用IIS配置php使用wincache进行优化访问速度

    通过以上步骤,您已经成功在Windows Server 2012上配置了IIS以运行PHP,并且使用了WinCache来优化PHP的执行效率。这不仅简化了PHP应用的部署流程,还提高了应用的响应速度,非常适合于生产环境中快速部署PHP应用。

    基于PHP的PT php小说搜索爬虫优化程序.zip

    【标题】"基于PHP的PT php小说搜索爬虫优化程序" 涉及的主要知识点是PHP编程语言在爬虫开发中的应用以及针对特定任务(如小说搜索)的优化技术。PHP是一种广泛使用的开源脚本语言,尤其适用于Web开发,而在这里,它...

    利用Docker优化PHP开发流程.pptx

    利用Docker优化PHP开发流程.pptx

    基于PHP的PTphp小说搜索小偷优化程序源码.zip

    【标题】"基于PHP的PTphp小说搜索小偷优化程序源码"是一个使用PHP编程语言开发的搜索引擎优化工具,特别针对小说网站。该程序的主要功能是自动抓取互联网上的小说内容,通过高效的爬虫技术,将小说数据进行整理、...

    php+mysql效率与优化

    优化PHP代码主要涉及以下几个方面: 1. **代码结构**:保持代码清晰和简洁,避免冗余和重复。良好的编程习惯如遵循DRY(Don't Repeat Yourself)原则,可以减少不必要的计算和提高代码可维护性。 2. **函数使用**...

    PHP程序优化总结借鉴.pdf

    PHP 程序优化总结借鉴 PHP 程序优化是提高 PHP 程序执行速度和效率的重要环节。下面总结了一些 PHP 程序优化的经验和技巧: 一、避免在大的数组上使用 in_array() in_array() 函数在大的数组上使用会非常消耗...

    php的资料php优化

    在开发基于PHP的应用程序时,优化是一项至关重要的工作,它能够显著提升应用程序的性能和用户体验。本文将围绕“php的资料php优化”这一主题展开,详细介绍一系列有效的PHP优化策略。 #### 1. 使用更快的输出方法:...

    PHP非侵入式监控平台优化性能定位Bug的神器别再让你的PHP程序裸奔

    本文将围绕“PHP非侵入式监控平台”这一主题,详细介绍其工作原理、优势以及如何利用它来提升PHP程序的质量。 首先,非侵入式监控意味着这种工具不会改变或影响原有的代码逻辑。它通过在运行时动态插入跟踪代码,...

    第4章 Nginx与PHP(FastCGI)的安装、配置与优化

    ### 第4章 Nginx与PHP(FastCGI)的安装、配置与优化 #### Nginx+FastCGI运行原理详解 Nginx作为一款高性能的Web服务器,在处理动态内容时,通常需要借助于FastCGI接口来调用外部程序(如PHP)。这种架构不仅提升了...

Global site tag (gtag.js) - Google Analytics