我们应该将PHP框架用于高度可扩展的网站吗?

时间:2011-05-13 07:47:11

标签: php frameworks cloud scalability cloud-hosting

我们正准备建立一个具有高规模潜力的网站。如果规模到来,我们希望为它做好准备!我们决定使用PHP,Apache和MySQL。我们应该使用某种PHP框架(PHPulse,CodeIgniter,CakePHP,Zend,...),还是最好从头开始构建所有东西? 网站的性质将类似于Facebook,但主要是文本数据(不是很多图像,视频)。网站将托管在云端。

你会推荐什么?

...问候

6 个答案:

答案 0 :(得分:7)

这个问题已被多次询问。普遍的共识是做你能做的事。不要担心从一开始就使它太可扩展,只需稍微考虑一下。试图从一开始就建立起太大的可扩展性是令人筋疲力尽的,你很可能会放弃。

如果你因为大受欢迎而开始出现问题,那太好了!你当时很受欢迎,希望能够获得足够的收入,开始担心支付更昂贵的托管和更高端的编程/数据库框架和引擎。

答案 1 :(得分:2)

从头开始构建它。控制每一位有助于优化。 Facebook甚至控制其php编译器:http://developers.facebook.com/blog/post/358/

不要使用框架,因为PHP已经是框架和模板引擎:http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html

使用一些像memcached这样的缓存库。我不确定您是否可以在云上使用它,或者云可能提供自己的缓存系统。

答案 2 :(得分:1)

如果你知道你需要尽快扩展它,那么使用现有的经过验证的框架是一个好主意,而不是从头开始构建自己的框架。与可扩展性不同,更多的是为了以后简化您的工作,并且更加确信样板代码能够运行良好。

另一方面,如果您从未使用任何上述框架,您可以考虑权衡您需要的时间来超越初始学习曲线。

答案 3 :(得分:1)

比平时花更多精力确保你的域图层与其他代码尽可能松散耦合 - 如果你发现其他图层存在问题,你应该能够保持开放状态。< / p>

一定要使用框架来启动和运行,但要注意使用自己的CRUD实用程序(CI,我正在看着你)。

如果您决定使用ORM解决方案,那么可以选择一个与许多框架配合得很好的解决方案。

答案 4 :(得分:0)

如果你从头开始构建每一件事,那么肯定会花费时间,但只有你才会知道代码的内部逻辑。相比之下,如果您使用框架,您将获得快速开发,但在这种情况下,您正在使用该代码打开您的网站,任何一个意味着更多的机会被黑客入侵。每种方法都有自己的亲和玉米。无论如何,你可以查看php Top 10 frame works of PHP的最佳框架。我建议Code Igniter

答案 5 :(得分:0)

我会说不,因为今天有更好的语言。 Python,Ruby和C#拥有比php更好的命名空间和开发工具。

然而,你真正的问题不是语言。它将是数据库层,因为这将更加集中。您可以使用memcached来减少数据库的负载。如果您正在使用ORM检查它能够运行直接查询并运行批量插入或使用连接而不是延迟加载的查询来获取相关对象。

您还应该使用队列来加快页面加载速度。如果您可以在页面请求之外执行较慢的操作,则将它们推入队列并稍后处理它们,可能在不同的服务器上。电子邮件和图像大小调整就是一个很好的例子。

如果你想要一个真正可扩展的Web应用程序,你将不得不走出Apache,MySQL泡沫并开始使用像Nginx和非关系数据库这样的工具。

目前,最好的做法是,在问题出现之前不要过多担心问题。只需确保您选择的框架是松散耦合的,这样您就可以执行诸如切换数据库层之类的操作。避免像瘟疫一样的codeigniter,它根本不是模块化的,没有ORM和一个非常糟糕的表单库。我推荐Django(python),有很多公司为它做云托管。我见过从PHP到Python的商店转换,他们最终喜欢它。不要以为你必须被锁定在PHP中,特别是当你选择托管时。

编辑,回复漫画 Django的。但是,如果你真的想要PHP,也许是Symfony,但它以慢速着称。 Kohana就像CI,但更多的社区驱动和OOP,所以codeigniter的一些主要缺陷很久以前就已经在kohana解决了。我也听过关于蛋糕的好话,但从来没有尝过它。至于codeigniter,是的很多人喜欢它,它很简单,但是缺少很多好的软件模式而不喜欢丑陋的快捷方式。我和它一起工作了一年,过了一段时间,团队中的每个人都同意我们重新发明轮子并且还需要别的东西。当你使用它一段时间后,问题开始冒出来。我们辩论了一段时间,最终终于得到了Django。这是一个艰难的决定,但却带来了更高的生产力。加上谷歌使用它,我想这说了很多。

严重的是,python是comp sci 101课程和专业中使用的唯一语言之一。 python的目标之一是让教学简单易学。这并不是那么可怕,打开一个终端,输入python并进行游戏。它也有许多不错的工具,比如pip,就像PHP-pear一样,除了精彩的python包存储库外,还可以使用git,gzip,hg和许多其他格式。 还有一堆软件包,我真的看不到几乎和PHP一样多。 http://djangopackages.com/

至少给它一个机会做这个教程,大约需要2个小时。它配备了内置的Web服务器,因此除了python本身之外没有什么可以设置的。

http://docs.djangoproject.com/en/1.3/intro/overview/