3

我正在做一个项目,让我不断地为新数据 ping 一个 php 脚本,所以如果我正确理解这一点,这意味着被 ping 的 php 脚本会无限期地反复运行。它有效,但我猜它对服务器造成了巨大的压力,并且可能被认为是丑陋和糟糕的做法。我说得对吗?

有什么办法可以保持与脚本的连接并利用 php 的内置输出缓冲来刷新我需要的内容,但是使用某种循环保持脚本无限运行,这样当新数据可用时它可以是输出。这也是一个坏主意吗?

我只是在寻找有更多经验的输入表单开发人员。

最后一件事...

是否有任何其他方法可以保持数据的持续流动(不包括闪光灯或 Silverlight 等技术)?

4

5 回答 5

4

如果您当前的工作并在针对您可能在此应用程序中预期的负载进行测试时继续工作,那么这并不是真正的不良做法。如果它有效,保持简单并不是犯罪。任何符合您所描述的内容都将违背网络原始模型的纹理,因此您正在冒险进入摇摇欲坠的领域。

我建议您查看Comet技术。它最流行的是与您想要的相反 - 服务器将信息连续推送到页面 - 但它显然可以双向工作。尽管您的里程可能会有所不同,但我听说了一些好事。正如维基百科所描述的:

在 Web 开发中,Comet 是描述 Web 应用程序模型的新词,在该模型中,长期持有的 HTTP 请求允许 Web 服务器将数据推送到浏览器,而无需浏览器显式请求。Comet 是实现这种交互的多种技术的总称。所有这些方法都依赖于浏览器中默认包含的功能,例如 Javascript,而不是非默认插件。

于 2009-04-26T19:46:37.137 回答
0

看起来 php 似乎不是最好的语言选择。可能考虑使用诸如 scala 或 erlang 之类的东西来更好地处理这种类型的长期消息传递。

于 2009-04-26T19:51:03.973 回答
0

您必须学习如何在 php 中使用套接字。

从这里开始:http: //php.net/manual/en/book.sockets.php

这里是关于编写独立 php 应用程序的有用手册:Advanced PHP Programming

于 2009-04-26T19:53:05.293 回答
0

我会说这取决于。如果您希望由客户端启动数据传输,那么您最好的选择是一些 ajax(如 getxmlhttpobject 或 iframe,如果您想作弊 :P)。如果您希望由服务器启动传输,那么 php 可能不是您要使用的语言。

于 2009-04-26T19:58:34.767 回答
0

您可以使用 ajax 来进行 http-streaming。看看ajaxpatterns

于 2009-04-26T20:16:25.253 回答