PHP:侦听HTTP请求/HTTP流

PHP:侦听HTTP请求/HTTP流,php,ajax,http,streaming,Php,Ajax,Http,Streaming,最近我读了一些关于Ajax HTTP流的文章。如果我对一切都很了解,那么HTTP流是通过向服务器发送Ajax请求来实现的。服务器启动一个PHP脚本,该脚本不会终止,但会定期刷新其内容,以便浏览器可以接收任何输出 然而,当许多客户端使用HTTP流连接到服务器时,会消耗相当多的内存,因为每个连接都需要自己的PHP进程。所以我在想,是否可能有一个PHP脚本来监听任何传入的HTTP请求?在这种情况下,该脚本可以处理多个连接,因此将节省内存。如果这是可能的,这种方法的缺点是什么?还有其他的方法吗 注意:目

最近我读了一些关于Ajax HTTP流的文章。如果我对一切都很了解,那么HTTP流是通过向服务器发送Ajax请求来实现的。服务器启动一个PHP脚本,该脚本不会终止,但会定期刷新其内容,以便浏览器可以接收任何输出

然而,当许多客户端使用HTTP流连接到服务器时,会消耗相当多的内存,因为每个连接都需要自己的PHP进程。所以我在想,是否可能有一个PHP脚本来监听任何传入的HTTP请求?在这种情况下,该脚本可以处理多个连接,因此将节省内存。如果这是可能的,这种方法的缺点是什么?还有其他的方法吗


注意:目前我没有关于这方面的真实示例,我只是在尝试。

您提到的问题称为推送与拉送通知。Pull是指客户端向服务器发送请求时,服务器响应,push是指服务器启动通信时

我觉得你在寻找一个“推送”解决方案。使用以下链接查看如何设置UDP连接:

是的,一个PHP进程可以侦听多个HTTP请求,您可以在中找到多个组件来侦听。注意,因为PHP不是进行多线程并发和多线程HTTP流的最佳语言选择。我同意@hakre的观点,PHP绝对不是这种语言。您确实需要一种具有可控多线程和同步的语言。我会选择Java,但这只是个人偏好。您还必须在端口80的另一个端口上侦听HTTP请求。你正在尝试模拟WebSockets吗?如果你想在PHP中尝试这一点,你可以查看ØMQ库来处理连接()。hakre,Dave-我已经很害怕了,因为我找不到关于PHP的很多主题。注:不幸的是,很多浏览器还没有实现WebSocket,但这或多或少就是我想要的!cgwyllie-看起来也很不错!谢谢我想你误解了我的问题。当然我说的是推送,这就是我说的Ajax;)我的问题是,是否可以让多个客户端(浏览器)连接到一个php进程。使用socket_create,我只能连接到其他域,不能连接到客户端,php脚本需要启动连接,而不是客户端。Ajax不是推送,Ajax是拉送。我不明白设计:php进程应该启动所有浏览器吗?另一个非常简单的PULL实现是使用JS和setTimeout()不,php进程不应该启动浏览器。我所说的Ajax流类型是使用Ajax(实际上是pull)从浏览器中调用PHP脚本,但是PHP脚本没有运行PHP脚本并关闭它,而是进入无限while循环,并不断检查是否有一些新数据要返回。当有新的数据时,PHP脚本将返回数据并刷新其缓冲区,以便webapplication接收内容(推送)。然而,这需要浏览器和服务器之间的每个连接都有自己的进程运行。。。(在下一篇评论中继续)因此,对于许多连接,有许多进程在大多数情况下几乎什么都不做,只是停留在内存中。所以我想知道是否有可能让一个php脚本运行,等待HTTP请求,而不是由HTTP请求启动。如果这是可能的,我可以让一个脚本运行以处理到浏览器的多个连接,而不是每个连接一个脚本。@Tiddo在apache上运行的任何php脚本都将能够处理多个连接。