当前位置:首页 > 开发 > 编程语言 > PHP > 正文

PHP框架的认识误区

发表于: 2011-01-27   作者:bardo   来源:转载   浏览次数:
摘要:     有人认为,PHP是每次请求都要初始化资源,这个开销非常大。由此,PHP不适合使用开发框架。    对于PHP,确实没有类的持久化,使得每次请求都要初始化资源,但是,这并不是开销的主要问题所在。最主要的问题,是在于开发PHP框架的人,对PHP本身的特性了解多少。最简单的,MVC需要检测UA,如果使用PHP自带的get_browser

    有人认为,PHP是每次请求都要初始化资源,这个开销非常大。由此,PHP不适合使用开发框架。
    对于PHP,确实没有类的持久化,使得每次请求都要初始化资源,但是,这并不是开销的主要问题所在。最主要的问题,是在于开发PHP框架的人,对PHP本身的特性了解多少。最简单的,MVC需要检测UA,如果使用PHP自带的get_browser函数,那肯定是死定了。因为,使用上的方便与简单,导致的是性能的开销。
    认为不可使用PHP开发框架的,还有的观点是:由于需要每次请求的时候初始化整个框架。其实,这也是一种误解。如果好好看看PHP源码,就会了解,PHP是按请求加载需要运行的文件,并不是整个框架。所以,对于框架本身,哪一种框架内核代码时越小,性能越好。
    还有观点:由于PHP这种每请求初始化资源的机制,也造成了PHP添加跨请求的高级特性相当困难。其实,跨请求本身,要看在哪一个层面。PHP提供了各类加速的缓存机制。虽然PHP的类是由于目前序列化函数仍有限制,不能持久化,但数据缓存对PHP的加速是相当快的。所以,认为由于这一限制,就使得PHP只能是一个保持在一个比较简单的web语言上面,这无疑更是错误的。PHP不乏大型的高速与高效的网站。并不是这些网站底层就没有框架。
    另外,还有轻信什么测试的结果。http://merbist.com/wp-content/uploads/2008/11/benchmarks.png,对于这个测试结果,我觉得,没有一丝一毫的可信度。我们无法相信这些测试结果,主要原因有这么几个方面。其一,PHP环境配置,是不是最优化配置?第二,测试结果中所选框架,是不是最优框架?仅拿CI与CAKE两者来说,CI的日志,没有多种输出,只有文件输出。这对于大型网站的管理是极不方便的。但是,如果将其改用LOG4PHP,那性能上的损失将会是多少,是不可想象的。原因在于,LOG4PHP是完全照抄的JAVA。至于CAKE,更是完全照抄RAILS。完全不顾及PHP的性能与语言本身的特性。
    比如最简单的,大量静态方法的使用。势必造成以空间换时间。CAKE中无处不在的静态方法,导致了内存中堆积大量的类。这种以空间换时间,是速度加快了,还是性能损失了,有多少人真正系统测试过?
    CAKE让RUBY的人了解PHP是对PHP的一个促进,同时,RAILS框架,也使得PHP框架得以注入新的血液,增加了新的开发思路。但,完全照抄是PHP目前最大的悲剧。这个当中的经典之作:CAKE:RUBY ON RAILS, SMARTY: JAVA STRRUTS  LOG4PHP:JAVA LOG4J,可悲的是,写这些抄袭之作的作者,都是对PHP不太了解,大量照搬RUBY,JAVA中的算法与函数,有些可以算是翻译,比如, LOG4PHP中的PROPERTIIES文件的处理就是这样,不必再举更多的实例了。为什么不能把JSF,或TYPESTRY也抄到PHP中,这是因为,如果没有很好的PHP功底,这几乎是不可能的。因为,这两个东西,如果也是照抄过来,势必慢如蜗牛。
    再有,梦想不用PHP框架开发大型网站,肯定是错上加错。WORDPRESS,DISCUZ这类无框架,无架构的极端糟糕的代码,网上已屡见不鲜。
    要访问数据库,最小的需求,也要把数据库访问封装成一个类吧?要进行错误与异常管理,也需要一个类吧?如果是大型的网站,总要有错误日志输出,以方便调视与运行监视吧。所以这些,拼一下,也算是PHP开发框架呀。
    看样子,否认PHP应当有框架的人,肯定也就认定,PHP做不了大网站。或者说,认定,PHP做大网站,也是垃圾架构。这可能是太武断了。
    凡认为PHP是反框架的,实际上,是不了解PHP语言的一些瓶颈在何处,无法写出高效的框架,所以,才这样认为的。

 

 

 

 

 

 

 

 

 

PHP框架的认识误区

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
认识的误区:Hadoop=云计算 作者:chszs,转载需注明。 作者博客主页:http://blog.csdn.net/chszs
今天看了一下网页游戏方面的内容,想学习一下,因为自己是搞java语言的,所以看到网页游戏的内容,
一直以来,对于mysql的query_cache,在网上就流行着这样的说法,“对于mysql的query_cache键值就是m
一直以来,对于mysql的query_ cache,在网上就流行着这样的说法,“对于mysql的query_cache键值就是
作者:SPSS中国 沈鹏 对于普通人来说,数据挖掘可能是一个神秘的过程。没有经验的企业实施数据挖掘
从远程调用框架认识Zookeeper 发表于 2014-01-02 11:14| 14814次阅读| 来源 博客园| 12 条评论| 作
Camel流程框架是Apache下的一个开源项目,是较为成熟的流程框架。在web项目中也可以无缝地集成于Spr
远程调用是系统或进程间的通信机制,是分布式系统开发的核心技术。远程调用技术可以将一组计算机系
远程调用是系统或进程间的通信机制,是分布式系统开发的核心技术。远程调用技术可以将一组计算机系
远程调用是系统或进程间的通信机制,是分布式系统开发的核心技术。远程调用技术可以将一组计算机系
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号