我目前正在使用PHP和Kohana框架创建一个网站。我希望网站能够使用实时(或接近实时)的数据(例如,聊天和实时馈送)。我需要它能够扩展到成千上万的并发用户。我已经读了很多书,但仍然不知道最好的方法是什么。
有没有人有使用StreamHub的经验?可以在PHP中使用它吗?
我是不是把自己挖到了一个坑里,需要转换语言?我看过node js和nowjs,但我厌倦了在Express中编写while站点(我想知道安全漏洞,代码可维护性,缺乏良好的ORM)。我读过关于Twisted Python的文章,但不知道有什么web框架可以在上面很好地工作,而且我不喜欢使用Nevow -也许Django可以很好地与Twisted Python一起使用?我只是在寻找正确的方向,所以我不会在PHP中走得太远,并意识到我无法获得所需的近乎实时的结果。
谢谢你的帮助。
发布于 2011-04-14 13:56:43
我看过nowjs和nowjs,但我厌倦了在Express中编写while站点(我想知道安全漏洞,代码可维护性,缺乏良好的对象关系管理)。
如果你能使用JavaScript,我个人可以保证代码的可维护性。我个人认为JavaScript比PHP更易维护,但这可能是因为缺乏PHP经验。
ORM不是问题,因为node.js偏爱基于文档的数据库。基于文档的数据库和json齐头并进,我发现couch db和它的map/reduce系统很容易使用,使用JSON感觉很自然。
在安全漏洞方面,是的,node.js服务器还很年轻,可能会有漏洞。这些都是不可避免的。目前还没有已知的漏洞,除非有人指出一个大漏洞,否则我会说它并不比IIS/apache/nginx更容易受到攻击。
我希望网站能够使用实时(或接近实时)的数据(例如,聊天和实时馈送)。我需要它能够扩展到成千上万的并发用户。
像这样的可伸缩性需要非阻塞IO。这需要一个非阻塞IO服务器,比如nginx或node.js (是的,阻塞IO可以工作,但是你需要更多的硬件)。
就我个人而言,我建议使用node.js而不是PHP,因为在节点中编写非阻塞IO更容易。你可以在PHP中做到这一点,但你必须做出所有正确的设计和架构决策。我怀疑有没有真正的异步非阻塞PHP框架。
Python的twisted /Ruby的EventMachine和nginx可以一起工作,但我对它们没有专业知识。至少在使用node时,你不会意外地调用阻塞库或使用本机阻塞库,因为JavaScript没有本机IO。
发布于 2011-04-14 13:51:04
PHP不是你应该用来实时更新网站的语言。PHP脚本首先在HTML ( HTML调用javascript文件)之前加载,因此PHP不能为您更新页面。但是,当与AJAX一起使用时(例如使用jQuery函数调用PHP文件来实时更新页面),您可以以这种方式使用PHP。
使用jQuery和AJAX (都是javascript),你可以在不重新加载页面的情况下更新页面。我见过像this one这样的网站,它们演示了如何使用jQuery聊天。
https://stackoverflow.com/questions/5664225
复制