php - 保持与 php 的实时连接?

标签 php performance keep-alive output-buffering

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

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

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

最后一件事......

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

最佳答案

如果针对您可能在此应用程序中预期的负载类型进行测试时,您当前的工作并且继续工作,那么这并不是真正的不良做法。如果可行,保持简单并不是犯罪。任何执行您所描述内容的操作都将违背网络原始模型的基本原则,因此您正在冒险进入不稳定的领域。

我建议您查看 Comet技术。它最流行的方式与您想要的相反——服务器不断地将信息推送到页面——但它显然可以双向工作。虽然你的里程可能会有所不同,但我听说过一些好消息。正如维基百科所描述的那样:

In web development, Comet is a neologism to describe a web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it. Comet is an umbrella term for multiple techniques for achieving this interaction. All these methods rely on features included by default in browsers, such as Javascript, rather than on non-default plugins.

关于php - 保持与 php 的实时连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/791464/

相关文章:

javascript - Magento 联系表 : How to stop submitting and sending hidden values to email

php - 将 Laravel 中的数据库提交与 AngularJS 模型/ View 同步

performance - 有效地检查FP位模式是否为整数。根据条件组合,分支速度更快?

c++ - Keepalive 时间 - 在 C++ 中不能减少到一分钟以下

php - 如何将 STDOUT 重定向到 PHP 中的文件?

php - 如果我用引用覆盖原始变量,内部会发生什么?

java - 在 Dao 方法中使用参数来获取实体是只读访问的最有效方法

java - 提高 Android 位图上 getpixel() 和 setpixel() 的速度

javascript - 如何减少聊天​​的 AJAX 请求数量?

java - HttpsUrlConnection 和保持 Activity 状态