2019独角兽企业重金招聘Python工程师标准>>>

有人认为,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语言的一些瓶颈在何处,无法写出高效的框架,所以,才这样认为的。

转载于:https://my.oschina.net/u/918621/blog/306337

谈谈大家对PHP框架的各种误解相关推荐

  1. 谈谈京东的服务框架JSF

    谈谈京东的服务框架 最近由于在实习期间接触到了京东的自研服务框架JSF,简称"杰夫",目前我写的一些新功能里面调用的下游接口就是杰夫提供的.现有有很多高效的服务框架,如阿里巴巴的D ...

  2. 【面试常问】谈谈你对集合框架的理解?

    谈谈你对集合框架的理解? 在面试中被问到这个问题该咋么回答呢?这个问题是我认为最难回答的一个问题,原因就他问的范围太大了不知道该咋么回答:就我而言遇到这种问题首先给他说个总的,从最大的开始说起,在说一 ...

  3. 谈谈Python的Flask框架学习与福利分享

    在秋天中暑 熬过了炎炎夏日,却在这个初秋的日子中暑了.本来休息不好,今天又跑了一天,结果回来坐车吹空调冷热交替的崩溃了... 脑壳疼 回家就躺倒睡了一觉,感觉舒服点了,起床开电脑却又不知道学点什么,想 ...

  4. Spring——》谈谈你对Spring框架的理解

    参考链接:     总结-->[Java]     总结-->[Spring] 一.Spring框架的发展历程 1)Spring的各个时间节点,对应的各个版本,当前的最新版本 2)Spri ...

  5. 谈谈分布式服务治理框架 Dubbo 重大升级

    为什么80%的码农都做不了架构师?>>>    前言 本文首发公众号 [一名打字员] Dubbo 今年重启维护,并且进行了重大的升级.在 JAVA 社区很多人都知道并且使用过 Dub ...

  6. 谈谈新的前端框架 Svelte 和现代前端框架的特点

    官方网址 https://svelte.dev/ 这个框架还是非常不错的,轻量级,代码量少,没有Virtual DOM高性能,涵盖了非常多的优点. 先来说说轻量级,通过CSS缩小后有约17kb的大小, ...

  7. java validate 框架_如何使用validator框架来validatebean

    展开全部 Validator框架是一个独立的Validation Framework,目前在Struts1.1中可32313133353236313431303231363533e58685e5aeb ...

  8. mongodb模糊查询_MongoDB技术从0到1+

    本文是陈仕在"青芒话生长"MongoDB征文比赛的获奖文章,下面我们一起来欣赏下. 前言 偶然机会看到mongo中文社区办了场征文活动,觉得挺有意思的,虽说自己还在成为大佬的路上, ...

  9. 【专访英特尔高级首席工程师戴金权】普通数据工程师,如何玩转深度学习?

    记者 | 白羽 几乎每周,人工智能深度学习,总会在某个领域有新的技术突破,新的亮眼成果出来. 不过,这些最新的突破和成果,更多还是在深度学习的各大社区流动,更多是被顶尖教授.学者所掌握和应用,对于普通 ...

最新文章

  1. pfSense book之2.4安装指南
  2. 函数声明后面加个stdcall是什么意思
  3. SQL Server 2000 sp4 简体中文版免费在线下载!
  4. react native中一次错误排查 Error:Error: Duplicate resources
  5. 在一个200*20的bmp中写汉字
  6. GARFIELD@04-14-2005
  7. run webIDE application using mock data
  8. 来入门一下kotlin吧
  9. [ZJOI2015] 地震后的幻想乡(状压dp + 期望)
  10. @suppressWarnings(unchecked)及其相关属性在Java中意思
  11. 1.KafKa-介绍
  12. 百度地图添加自定义shp图层_GIS当中使用uDig打开shp图层,并查看数据结果
  13. SCM供应链管理系统有源码可以共享一下吗?
  14. 【Unity3D-UGUI原理篇】(二)Canvas Scaler 缩放原理
  15. 【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 人物数据内存结构 | 人物三维坐标数据分析 )
  16. MongoDB数据库开发环境搭建与配置,Windows环境下
  17. 免安装mysql8.0
  18. 第八章 高级搜索树 (b4)B-树: 插入
  19. hadoop成功启动后,重新formatamp;nbs…
  20. findfirst, findnext

热门文章

  1. Linux 运维工程师的六类好习惯
  2. 普通PC安装ESXI6.0无法识别网卡驱动问题
  3. 在C#中,Json的序列化和反序列化的几种方式总结
  4. Python3.6.4 安装
  5. centos环境变量设置
  6. ShardedJedis 错误使用
  7. xCode中工程相关的一些处理:一个工程包含多个Target的用途和使用方法【转】...
  8. Struts2与Webwork2的区别
  9. matlab练习程序(图像放大/缩小,最邻近插值)
  10. laravel It is unsafe to run Dusk in production. In DuskServiceProvider.php line 43:错误处理