yii的ar真的能用么?

我在首页会很多个ar的请求。热门文章、最新文章、编辑推荐、最新评论的文章。。。。

我把这些通过 model()->findAll()的结果放在一个数组里。

然后把这个数组var_dump了一下,这些数据高达1.06M。这是不是太耗内存了?

页面上全是密密麻麻的数据表结构,如果关联关系复杂点的,会更多。

我光var_dump(yii::app()->db) 就有5000多行的数据。

这样的db操作这么耗内存,敢用么?谁能消除我这个担心?多谢

AcitveRecord ,只能玩一玩开拓眼界. 真要生产环境用, 就不行!

那是因为是PDO对象,所以封装了很多的结构代码吧

使用框架提高开发效率ar起很大作用,要是不用岂不是mvc里面的m残废了?强哥来解惑一下

嗯,开发效率是立竿见影的。但是背后的性能问题不能回避。今天还跟一个使用yii做项目的朋友聊,他也在抱怨内存的问题。

难道一个框架只能当学AR的教案使用。一到实际的项目,尤其是稍微复杂点的项目就会水土不服。

你的结论有点想当然了。建议你仔细做profiling来验证。事实上,AR已经被成功应用在若干大流量的网站上了。

你不能用var_dump()来估计AR的内存开销。var_dump会把所有被reference到的对象都dump出来,包括application,以及所有的application component,因为它们都被AR间接reference到了。

AR额外的内存开销是存储10个左右变量的开销。如果按20字节来估算,额外的开销是200字节,这样在1000个AR对象情况下,额外的内存开销为200KB。这个对几乎所有的web应用而言应该不是问题。

如果你需要装载更多的数据,建议你使用DAO。

另外,对于任何大流量的web应用而言,cache都是必须的。cache可以帮助解决绝大多数的性能瓶颈。

赞。

很专业的回复,我确实没有做过性能方面的测试。也对var_dump本身的实现不是很了解。

多谢qiang.

这句话不是很理解,求解!!!

只有AR里定义的对象变量才会占用多余的内存,按qiang的意思,应该是有大约10个这样的成员变量。

而var_dump出来的结果里,大部分是到别的对象的reference,或者是静态变量,这些东西打印出来很多,其实内存占用上并没有什么影响。

我心戚戚

强又给上了一课,顶一下!

10x20x1000/1024=195.3195

楼上算的还真仔细。。。不过就是不知道对于一个访问量上千万的网站来说。是不是有点性能问题?