用erlang实现Comet并将其用于PHP应用程序

2024-10-03 15:23:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个phpweb应用程序,我已经到了需要构建Comet服务器的地步,因为每当有新数据可用时,我都需要更新我的用户(非常像FB)。我花了太多时间搜索web,得出了一个结论:构建Comet服务器的最佳方法是使用erlang构建它。另外,我发现apachephp并不是一个很好的组合,因为每个请求的进程问题。所以,我必须为comet应用程序构建一个轻量级http服务器。

我对erlang世界完全是新手,但我正在考虑在erlang中实现Comet服务器,并使其仅作为更新客户端的接口。对于其余的web应用程序函数,我仍然希望继续用PHP实现它们。因此,将更新客户机的请求定向到erlang服务器,并将其他请求定向到apachephp服务器。

这看起来很复杂。为了构建Comet服务器,我需要知道学习erlang的最佳方法是什么,以及如何将两种语言(erlang和php)结合起来工作,就像我有新信息一样。为了被推送到客户机,我需要将新的更改提供给Comet,然后它将信息推送到用户。那么如何从php和erlang中获益并使它们协同工作呢。

很抱歉解释太长,但我真的需要你们的帮助和任何指导,你们可以给我学习和实现我想要的。事先非常感谢。

编辑: 我应该考虑学习Python和Twisted来完成我想要的吗?


Tags: 数据方法用户服务器web信息应用程序客户机
3条回答

用Erlang做这件事是完全可能的。一种可能是使用长轮询,这可以通过mochiweb实现。http://code.google.com/p/mochiweb/

另一个想法是使用套接字。在合理数量的浏览器支持web套接字之前,您必须使用flash“网桥”来创建TCP连接,并使用javascript与服务器通信。看一下websocketjs:http://github.com/gimite/web-socket-js

一旦设置好了,您就可以使用如下代码在Erlang进程和PHP之间进行通信:http://www.math-hat.com/~zukerman/projects/php-erlang/

再说一次,如果您还是Erlang的新手,那么从长远来看,使用Python和Twisted或Tornado可能会节省时间。在

您可以很快地学习Erlang,您应该能够使用像gen_server、gen_event之类的东西。学习Erlang的最快方法应该是按照自己的方式阅读文档和示例:http://www.erlang.org/doc/index.html。在

对于PHP和Erlang之间的通信,您可以在PHP端使用sockets、fsockopen()和其他函数,在Erlang端使用gen_tcp。您可以解析从PHP端通过管道发送的Erlang术语(更多信息here)。在

我从来没有使用过Erlang和PHP,但是我使用了Erlang和Python并取得了一些成功,因为我知道PHP应该很容易,只要尽量保持一切整洁,并保持Erlang端的状态,只使用PHP来生成UI。在

对于comet风格的应用程序来说,Apache+php确实是一种糟糕的技术。您可以使用许多其他更接近php的技术:RubyPython和Perl都应该是可用的。如果你真的愿意,你也可以用php编写某种类型的socket服务器,但我可能不会打赌会成功。这并不是说Erlang不是一个好的选择,但是有更多的主流选择。在

如果您不想使用主流语言,请务必查看node.js,它运行一些非常令人印象深刻的基准测试。另外,你可能已经知道一点javascript了。在

相关问题 更多 >