我们正在准备建立一个具有高规模潜力的网站。如果规模到来,我们希望为它做好准备!我们决定使用PHP,Apache和MySQL。我们是否应该使用某种PHP框架(PHPulse,CodeIgniter,CakePHP,Zend,...),或者从零开始构建所有东西? 网站的性质与Facebook相似,但主要是文本数据(不是很多图片,视频)。网站将托管在云上。我们是否应该将PHP框架用于高扩展性网站?
你会推荐什么?
Regards ...
我们正在准备建立一个具有高规模潜力的网站。如果规模到来,我们希望为它做好准备!我们决定使用PHP,Apache和MySQL。我们是否应该使用某种PHP框架(PHPulse,CodeIgniter,CakePHP,Zend,...),或者从零开始构建所有东西? 网站的性质与Facebook相似,但主要是文本数据(不是很多图片,视频)。网站将托管在云上。我们是否应该将PHP框架用于高扩展性网站?
你会推荐什么?
Regards ...
此问题已被多次询问。普遍的共识总是做你能做的事情。不要担心从一开始就使其过于可扩展,只需稍微放在心上。试图从一开始就构建可扩展性令人筋疲力尽,你很可能会放弃。
如果你开始因为大量的知名度而出现问题,那真是太棒了!然后,你足够受欢迎,并希望获得足够的开始不必担心支付更昂贵的主机和更高端的编程/数据库框架和引擎。
到目前为止,我还没有使用任何框架(手工制作所有东西)。但这个网站真的必须是完美的(至少我想接近那:))。这是一个大项目,团队很小,时间有限,所以我认为这次实施一个框架是个好主意。它带来了一些基于良好实践的概念,所以我不必处理它们。后来,当页面增长时,如果需要,我可以用更合适的替换这些概念。 – Cartoonle 2011-05-13 09:53:27
By Frameworks我指的是PHP,并将它交给了预编译的DLL,比如eBay,以及引擎我正在使用MYSQL。混合型网站通常不使用MYSQL,而是使用基于高端性能的数据库引擎。 – 2011-05-13 10:27:23
如果您知道您将需要尽快调整它,那么使用现有的已验证框架是一个不错的主意,而不是从头开始构建自己的框架。与可扩展性不太相关,但更多的是为了稍后简化您的工作,并且更有信心,样板代码的功能足够好。另一方面,如果您从未使用任何上述框架,您可能会考虑权衡您需要超越最初学习曲线的时间。
如果你从零开始构建每一件事,那么肯定需要时间,但只有你会知道代码的内部逻辑。相比之下,如果你使用框架,你会得到快速的发展,但在这种情况下,你正在使你的网站上的任何一个打开的代码意味着更多的机会被黑客攻击。每种方法都有自己的专业和玉米。无论如何,你可以看看php Top 10 frame works of PHP的最佳框架。我会推荐Code Igniter
从头开始构建它。控制每一位有助于优化。 Facebook的甚至控制其PHP编译:http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
使用一些缓存库一样的memcached:http://developers.facebook.com/blog/post/358/
,因为PHP已经是一个框架和模板引擎不要使用框架。我不确定您是否可以在云上使用它,或者云可能会提供自己的缓存系统。
是的,我已阅读highscalability.com上的这些“巨大网站架构”,但我认为在这个阶段不可能以这种方式开始。在这个阶段,我们可能应该建立一个更简单的建筑,但是要敞开大门。所以我们可以一步一步地优化它。 – Cartoonle 2011-05-13 10:30:29
你做到了,你拥有它。你期望写自己的图书馆,记录他们*和*维护他们。一个框架可以让你专注于业务逻辑,忘记其他废话。当然,有一些糟糕的框架和模板语言。但有时候你会用框架获得更好的工具。良好的文档,内置缓存和表单库的集成单元测试以及可以帮助您的社区,因为您的代码将会有所标准化。这只是浪费时间编写自己的框架。我确信Facebook没有过早优化。 – Keyo 2011-05-16 08:13:28
我会说不,因为今天有更好的语言。 Python,Ruby和C#拥有比php更好的命名空间和开发工具。
然而,你真正的问题不会是语言。这将是数据库层,因为这将更加集中。您可以使用memcached来减少数据库的负载。如果使用ORM检查它是否具有运行直接查询和运行批量插入或使用连接而不是延迟加载查询来获取相关对象的所有功能。
您还应该使用队列来加快页面加载速度。如果您的操作速度较慢,可以在页面请求之外完成,然后将它们推入队列并稍后处理,可能在不同的服务器上。电子邮件和图像大小调整就是一个很好的例子。
如果你想要一个真正可扩展的Web应用程序,你将不得不走出Apache,MySQL的泡沫,并开始使用Nginx和非关系数据库等工具。
现在,最好做什么,在它存在之前不要太担心这个问题。只要确保你选择的框架是松散耦合的,这样你就可以做一些事情,比如切换数据库层。避免像鼠疫这样的代码错误,它根本不是模块化的,没有ORM和一个非常差的表单库。我会推荐Django(python),有很多公司为它做云托管。我已经看到了从PHP到Python的商店切换,他们最终喜欢它。不要以为你必须被锁定到PHP,特别是当你选择托管。
编辑,回复Cartoonle Django。但是,如果你真的想要PHP,也许Symfony,但它被称为缓慢。 Kohana就像CI一样,但更多的社区驱动和面向对象,所以一些主要的代码错误早已在kohana中解决了。我也听说过关于Cake的好东西,但从来没有尝过它。至于codeigniter,是的很多人喜欢它,它很简单,但缺乏很多优秀的软件模式,以支持丑陋的快捷键。我和它一起工作了一年,过了一段时间,团队中的每个人都认为我们正在重新发明轮子并需要别的东西。当你使用它一段时间后,问题开始冒出来。我们辩论了一段时间,最终结果与Django实际上。这是一个艰难的决定,但却获得了更高的生产力。加上谷歌使用它,我认为这很多。
认真python是comp sci 101课程和专业中唯一使用的语言之一。 python的目标之一是让教学比较简单。这不是那么可怕,打开一个终端,输入python
,并有一个游戏。有很多很好的工具,像pip,它就像PHP梨,但也可以与git,gzip,hg以及除了精彩的python软件包仓库以外的其他一些格式一起使用。还有一大堆的软件包,我真的没有看到与PHP几乎一样多的软件包。 http://djangopackages.com/
至少给它一个机会,做了约2个小时的教程。它带有一个内置的Web服务器,因此除了python本身之外,没有其他设置。
我不确定这是什么意思。这个问题更像是如果框架在可伸缩性方面可能代表一个问题。 (不是如果它会帮助)。是否有专门用于可伸缩性的框架? – Cartoonle 2011-05-13 09:38:33
不是我所知道的。没有主要的框架帮助例如分布式代码或性能查询(如果你定义了你的意图而不是让我们猜测)也会有所帮助。另请参阅以前的拉里法里讨论http://stackoverflow.com/questions/132056/what-is-the-best-php-mvc-framework-for-scalability – mario 2011-05-13 09:40:16
为什么甚至打扰PHP。它正在出路。其他语言如Python,Ruby,C#都有更好的开发网站的工具。 – Keyo 2011-05-14 06:03:45