CodeIgniter 是大型应用程序的明智选择吗?

2022-08-30 17:42:33

我一直在阅读从开发的角度来看,codeigniter是多么伟大。我相信使用这个框架将使开发过程更快。但我问自己的问题是,一个单独制作的框架会有所不同,以满足你的需求吗?

尽管广告上宣传的占用空间很小,但CI是否会“陷入困境”,因为它基本上是框架上的框架(后来将PHP称为C框架)?有没有好的方法来分散负载?在野外有没有使用CI进行的大型应用?

谢谢卡斯帕。


答案 1

我正在运行一个带有大约11K文件的codeigniter网站。

我根据自己的需要对代码图的基本结构进行了大量修改。例如,我有3个应用程序,其中3个前端控制器使用相同的系统文件。我使用smarty作为我的模板引擎。我有丰富的PHP Web应用程序,由jquery和protype/Scriptaculous提供支持。我使用表单验证,身份验证,活动记录,电子邮件等。

到目前为止,我的经历非常积极。

一旦你得到了一个(真正的)模板引擎,如smarty插入Codeigniter,你就拥有了中型到大型网站所需的所有功能。

您必须考虑将您的网站组织成大型“元组”,因为Codeigniter中的“控制器”结构会期望这样的行为。(“博客”,“商品”,“论坛”等)

CI非常容易添加插件。

该框架简化了许多废话,否则您将需要手动编写代码。它快速,简单且可配置。

到目前为止,我对CI的一大抱怨是它不是很具有多应用程序感知能力。默认布局假定您正在运行 1 个应用程序。在我的情况下,我有一个全局应用程序,其中包含可以拉入所有正在运行的应用程序的全局文件。但是,这可以更优雅地解决。此外,您必须添加一些额外的绒毛才能在前端控制器之间切换。

我最喜欢的CI方面是MySQL数据库上的轻松活动记录。设置数据库连接并运行活动记录查询非常简单。

我会说这很容易上手。只要确保你货比三家,并弄清楚如何将smarty插入你的应用程序。您可以使用Codeigniter的默认“视图”,但是当您在模板中需要if/else逻辑的那一刻,您就搞砸了。

我在每个应用程序中设置了一个“模板”和一个“内容”区域,我可以分别用智能模板和静态内容填充它们。其余的我可以从数据库连接中提取。


答案 2

这真的是一个只有你能回答的问题。当你谈到一个“大型系统”时,你可能意味着一些被广泛使用的东西(通过网页浏览量/等),或者包含一套巨大的业务规则但只被少数人使用的东西。应用程序是否需要快速,或者是否可以在多个服务器之间对其进行负载平衡?

你的“PHP是C上的一个框架”的评论是相当不正常的,IMO。不,PHP没有C那么快。但它在处理Web请求方面要好得多。PHP被用于世界上一些最大的网站 - Facebook最初完全是用PHP编写的。雅虎经常使用PHP。所以PHP对于几乎任何人来说都足够快,特别是考虑到数据库几乎总是你的瓶颈。如果您的PHP应用程序正在减速,您可以使用memcache /负载平衡器/在您的网络上放置更多应用程序服务器。很容易扩展PHP端的东西。

我能告诉你的是与其他框架的简要比较。我在有限的部署中使用过CI,主要是帮助其他人,但我所看到的,我喜欢。与CakePHP相比,它为您提供了运行时速度优势,但它会增加您的开发时间(因为Cake最大的优势是其快速开发和部署的能力)。在速度方面,它感觉与Zend或Symfony相当,它们仍然比自己编写原始PHP慢5-7倍。

总结各种框架(注意:我在下面的意见):

  • CakePHP非常适合快速发展。它的性能是主要框架中最差的,尽管1.3版本(即将推出!)应该让你免费(API没有变化,他们只是删除了PHP4支持)25%的速度提升。它专注于ActiveRecord,并且非常快地启动并运行一个功能齐全的网站(认真地说,认真地快速开发/原型制作)。
  • Zend是使用最广泛的。它通过添加模块具有最大的灵活性。它非常快,虽然不是特别轻巧。对于一个企业项目,我会选择这个或symfony。感觉就像使用一个布查不同的库对我来说。而且他们的命名惯例有点繁琐...
  • Symfony - 参见Zend评论。虽然symfony应该更加进取。
  • CodeIgnitor是这个街区的新热门孩子。它专注于远离你的方式,同时仍然是一个“框架”,即一个可以帮助你更快地完成工作的工具。它运行速度快,但开发速度稍慢。

推荐