我们正准备建立一个具有高规模潜力的网站。如果规模来了,我们要做好准备!我们决定使用 PHP、Apache 和 MySQL。我们应该使用某种 PHP 框架(PHPulse、CodeIgniter、CakePHP、Zend,...),还是从头开始构建一切更好?网站的性质将类似于 Facebook,但主要是文本数据(图像、视频不多)。网站将托管在云上。
你会推荐什么?
问候...
我们正准备建立一个具有高规模潜力的网站。如果规模来了,我们要做好准备!我们决定使用 PHP、Apache 和 MySQL。我们应该使用某种 PHP 框架(PHPulse、CodeIgniter、CakePHP、Zend,...),还是从头开始构建一切更好?网站的性质将类似于 Facebook,但主要是文本数据(图像、视频不多)。网站将托管在云上。
你会推荐什么?
问候...
这个问题已经被问过很多次了。普遍的共识是做你能做的。不要担心从一开始就让它变得太可扩展,只要稍微记住它。试图从一开始就构建可扩展性太强,你很可能会放弃。
如果您确实因为大受欢迎而开始遇到问题,那就太好了!然后你就足够受欢迎,并希望赚到足够的钱,开始不必担心支付更昂贵的托管和更高端的编程/数据库框架和引擎。
从头开始构建它。控制每一位有助于优化。Facebook 甚至控制其 php 编译器:http: //developers.facebook.com/blog/post/358/
不要使用框架,因为 PHP 已经是框架和模板引擎:http ://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
使用一些缓存库,如 memcached。我不确定你是否可以在云上使用它,或者云可能会提供自己的缓存系统。
比平时付出更多的努力来确保您的域层与其余代码尽可能松散耦合 - 这样,如果您发现其他层存在问题,您应该能够敞开大门进行更改。
一定要使用框架来启动和运行,但要小心使用他们自己的 CRUD 实用程序(CI,我在看着你)。
如果您决定要使用 ORM 解决方案,那么可能会选择一个可以很好地与许多框架配合使用的解决方案。
如果您知道很快需要对其进行扩展,那么最好使用现有的经过验证的框架,而不是从头开始构建自己的框架。与其说是可扩展性,不如说是为了简化您以后的工作,并且对样板代码功能足够好更有信心。
另一方面,如果您从未使用过任何上述框架,您可能会考虑权衡超越初始学习曲线所需的时间。
如果你从头开始构建每一个东西,那么肯定会花费时间,但只有你会知道代码的内部逻辑。相反,如果您使用框架,您将获得快速开发,但在这种情况下,您正在使用对任何人开放的代码创建您的网站,这意味着更多的机会被黑客入侵。每种方法都有自己的优点和缺点。无论如何,您可以查看 PHP 的最佳框架 PHP 的10 大框架作品。我会推荐Code Igniter
我会说不,因为今天有更好的语言。Python、Ruby 和 C# 具有比 php 更好的命名空间和开发工具。
然而,你真正的问题不是语言。它将是数据库层,因为这将更加集中。您可以使用 memcached 来减少数据库的负载。如果您使用 ORM,请检查它是否具有运行直接查询和运行批量插入或使用连接而不是延迟加载查询来获取相关对象的所有能力。
您还应该使用队列来加快页面加载速度。如果您有可以在页面请求之外完成的缓慢操作,则将它们推入队列并稍后处理它们,可能在不同的服务器上。电子邮件和图像大小调整就是一个很好的例子。
如果您想要一个真正可扩展的 Web 应用程序,您将不得不跳出 Apache、MySQL 泡沫,开始使用 Nginx 和非关系数据库等工具。
就目前而言,最好的办法是在问题出现之前不要过分担心。只需确保您选择的任何框架都是松散耦合的,这样您就可以执行诸如切换数据库层之类的操作。避免像瘟疫一样的 codeigniter,它根本不是模块化的,没有 ORM 和一个非常糟糕的表单库。我会推荐 Django(python),有很多公司为它做云托管。我见过一家商店从 PHP 切换到 Python,他们最终非常喜欢它。不要认为您必须被锁定在 PHP 中,尤其是在您选择托管时。
编辑,回复 Cartoonle Django。但如果你真的想要 PHP,也许是 Symfony,但它以速度慢着称。Kohana 与 CI 类似,但更多的是社区驱动和 OOP,因此 codeigniter 的一些主要缺陷很早就在 kohana 中得到了解决。我也听说过关于蛋糕的好消息,但我自己从未尝过。至于 codeigniter,是的,很多人都喜欢它,它很简单,但缺乏很多好的软件模式,而倾向于丑陋的快捷方式。我用它工作了一年,一段时间后,团队中的每个人都同意我们重新发明轮子太多了,需要其他东西。当您使用它一段时间后,问题就会开始冒泡。我们争论了一会儿,最终最终还是选择了 Django。这是一个艰难的决定,但以更高的生产力得到了回报。加上谷歌使用它,我认为这说明了很多。
严肃地说,python 是 comp sci 101 课程和专业中使用的唯一语言之一。python 的目标之一是让 comp sci 的教学变得容易。没那么可怕,打开终端,输入python
并玩一玩。它周围也有很多不错的工具,比如 pip,它类似于 PHP-pear,但也适用于 git、gzip、hg 和许多其他格式,除了精彩的 python 包存储库。它周围还有一堆包,我真的看不到 PHP 那么多。http://djangopackages.com/
至少通过教程来给它一个机会,这需要大约 2 个小时。它带有一个内置的 Web 服务器,因此除了 python 本身之外没有什么需要设置的。