background image

做 ROR 有一年了, 感觉非常好.配合敏捷实践(除了 pair, 由于是和美国工程师远程合作.)开
发速度的确快.一共三个人写代码,短短半年, 项目就基本结束了....

现在新项目即将到来, 客户在 php 和 rails 之间难以取舍. 我也打算趁此机会了解一下 php.
由于项目定制性还是比较高,想通过成熟的 CMS 等系统来改改估计是没戏。
从头开发又觉得太慢。于是想从开源框架入手。

经过了解才发现, php 新兴的一些框架基本上清一色的学习(或者叫抄袭,特别是 cakePHP, 
那简直抄得太厉害了.)rails。而且这些框架还发展的很好,越来越受到 php

 

社区的欢迎。比

如国外 cakePHP,国内的 Fleaphp, QeePHP 等等,就不一一列举了.

昨天用 cakePHP 做了个简单的 demo  

, 确实抄 rails

 

那是抄的相当直白。甚至连 rake 都还有

相应的东西代替。除了 migration 和 filter 我没找到对应的东西。让我一个不懂 php 的人,都还
是可以很快地上手了.

一方面感叹 php 抄 rails 这种彻底,另一方面也感叹这些抄袭之作的确也带来了 php 开发
效率的提升。虽然由于 php 本身的原因,框架的引入对性能的影响是比较大的。但是这些
框架的出现大有重整 php 社区的意思。(至少客户就告诉我们,用 rails 不如用 cakePHP,
这样他们也不会引入更多风险。他们还介绍他们美国几个团队都又从 rails 转回 cakePHP
了.)

我就纳闷儿了,当时还觉得 rails 就是冲着 php 的市场去的。。。现在反而觉得 rails 的思想拯
救了 php...

 

大家觉得是应该继续说服客户呢? 还是就用山寨 rails 了呢?

高手 robbin 的回复:
----------------------------------------------------------------

PHP 和 Python/Ruby 的运行机制有一个本质区别:PHP 是每次 HTTP 请求过来以后,初始
化全部资源(例如创建数据库链接、加载系统类库,创建缓存等等),处理完毕,释放全
部资源,这不像 Python/Ruby 之类带有 GC 的脚本语言,Python/Ruby 是初次启动的时候
初始化资源,随后的请求就不必再次初始化资源了。

这种机制的差异带来的区别就是:

1、PHP 极难出现严重的内存泄露问题,随便你代码写的多烂,反正每个请求一执行完毕 ,
所有资源统统释放光。而 Python/Ruby 则需要依赖 GC 来回收内存,因此稍有不慎,还是
会出现 GC 无法释放的内存泄露问题。

2、PHP 每次请求都要初始化资源,这个开销非常大。所以尽管 PHP 解析器本身的运行速