Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用erlang实现Comet并将其用于PHP应用程序_Php_Python_Erlang_Comet_Twisted - Fatal编程技术网

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

使用erlang实现Comet并将其用于PHP应用程序,php,python,erlang,comet,twisted,Php,Python,Erlang,Comet,Twisted,我正在构建一个PHPWeb应用程序,现在我需要构建一个Comet服务器,因为每当有新数据可用时,我都需要更新用户的数据(非常像FB)。我花了很多时间搜索web,我得出结论,构建Comet服务器的最佳方法是使用erlang构建它。我还发现apache php不是一个很好的组合,因为每个请求的进程都会出现问题。因此,我必须为comet应用程序构建一个轻量级http服务器 我对erlang完全是新手,但我正在考虑在erlang中实现Comet服务器,并使其仅作为更新客户端的接口。对于其余的web应用程

我正在构建一个PHPWeb应用程序,现在我需要构建一个Comet服务器,因为每当有新数据可用时,我都需要更新用户的数据(非常像FB)。我花了很多时间搜索web,我得出结论,构建Comet服务器的最佳方法是使用erlang构建它。我还发现apache php不是一个很好的组合,因为每个请求的进程都会出现问题。因此,我必须为comet应用程序构建一个轻量级http服务器

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

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

很抱歉这么长时间的解释,但我真的需要你们的帮助和任何指导,你们可以给我学习和实施我想要的。先谢谢你

编辑:
我应该考虑学习Python和扭曲来完成我想要的吗? 您可以很快地学习Erlang,您应该能够使用诸如gen_服务器、gen_事件之类的东西。学习Erlang最快的方法应该是阅读以下文档和示例:

对于PHP和Erlang之间的通信,可以在PHP端使用套接字、fsockopen()和其余部分,在Erlang端使用gen_tcp。您可以从PHP端解析通过管道发送的Erlang术语(更多信息)


我从未使用过Erlang和PHP,但我成功地使用了Erlang和Python,因为我知道PHP应该很简单,只要试着保持一切整洁,保持Erlang端的状态,只使用PHP生成UI。

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


如果你不想使用主流语言,也一定要去看看,它运行着一些非常令人印象深刻的基准测试。另外,您可能已经了解了一些javascript。

使用Erlang绝对可以做到这一点。一种可能是使用长轮询,这可以通过mochiweb实现

另一个想法是使用套接字。在合理数量的浏览器支持web套接字之前,您必须使用flash“网桥”创建TCP连接,并使用javascript与服务器通信。看看web套接字JS:

一旦设置好了此选项,您就可以通过以下方式在Erlang进程和PHP之间进行通信:


再说一次,如果你还是Erlang的新手,也许从长远来看,使用Python和Twisted或Tornado可以节省时间。

如果你正在考虑Python和Twisted,你可以看看Orbited。他们有非常成熟的Comet实现。您可以使Orbited通过STOMP协议与PHP应用程序通信

这篇文章有一个不错的教程,可以让你开始使用Orbited


要将应用程序与PHP集成,您需要使用google for PHP STOMP客户端

一个附加选项是使用Nginx及其推送模块()


这将允许您从PHP使用Comet,而无需学习新的语言。

试试Chicago Boss framework。。。使用它,你不必知道OTP的细节(它实际上非常简单、强大且经过战斗验证),因为芝加哥老板的设计师成功地将其封装得很好。。。根据教程

在学习OTP之后,我现在正在学习它。

你应该研究一下。它是一个已经存在了十多年的Erlang web服务器,非常稳定,仍然处于积极的开发和维护中,支持长轮询、PHP应用程序、WebSocket等等——几乎所有您想要的东西


Yaws源代码在上面,它的邮件列表在上面。

我完全同意学习主流语言和更接近PHP比学习erlang更好,但是python真的强大吗?它可以处理许多并发请求(100K+)?当您比较nodejs和python时,哪一个更容易学习并且可以处理如此多的请求?感谢您的帮助PHP的问题是您需要为每个请求处理一个过程。在大多数其他语言中,您可以编写一个简单的Web服务器,并为每个请求使用一个线程,在所有等待的请求之间共享资源(例如内存)。在python中可以很好地实现这一点。我不知道这些数字是如何叠加的,所以您可能应该做一些基准测试,但我猜它们相当接近。请您指导我如何实现Python+twisted以实现comet服务器,以及是否可以将其与php应用程序连接?Python+twisted能够处理许多并发请求吗?对不起,我没有使用Python/twisted。我知道它是为一次处理多个请求而构建的,我相信PHP和Python有一种方法可以按照您所说的方式进行通信,但我不知道有什么方法可以马上做到这一点。您不认为我会面临同样的问题,因为PHP也有自己的进程吗