php - SSE 或长轮询共享主机上的实时通知?

标签 php mysql long-polling shared-hosting server-sent-events

<分区>

在共享主机服务器发送事件 (SSE) 或长轮询上实现实时通知的最佳方式是什么?

我看了一个视频,说 SSE 不适合共享主机、Apache 服务器,并且不适合 PHP 和 MySql。

link the video

我只想知道哪种技术更适合在共享服务器上进行实时通知的长轮询或 SSE,我的服务器在 godaddy.com 上

请提供解释推荐技术的良好链接。

最佳答案

每个 SSE 连接都打开一个专用套接字。如果您使用的是 Apache 和 PHP,那么内存中也会有一个实例。他们坐在那里,占用内存,即使您从不向客户端发送任何数据。

共享主机的经济性依赖于大多数用户不会在大多数时间加载服务器的想法。如果您开始一直在内存中保存 apache 进程,所有,您的 ISP 将四处杀死这些进程。例如,BlueHost 似乎有一个脚本可以自动寻找并销毁长时间运行的进程;我想 GoDaddy 也有同样的东西。

除此之外,ISP 可能会在您的网站前面放置缓存代理服务器,这会干扰 SSE 和长轮询。 (在这种情况下,您可以向代理发送特殊 header 以告诉它不要这样做。)

因此,没有技术原因 SSE 和长轮询不能与共享主机一起使用,但实际上您的 ISP 会试图阻止您。

对于你问题的另一部分,SSE和long-polling基本相同; SSE 为您提供了一个内置的 JavaScript API,并且效率更高一些。当用户的浏览器支持时使用 SSE,否则编写您自己的长轮询例程。

如果您绑定(bind)到共享主机,我建议使用短轮询(即每 15 或 30 秒调用一次 AJAX)。您增加了一点延迟,但节省了一点钱。

关于php - SSE 或长轮询共享主机上的实时通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28007796/

相关文章:

ios - 这种递归长轮询技术会导致堆栈溢出吗?

java - Android长轮询技术

php - 在热图上显示大规模数据会导致网页崩溃

php - mysql_num_rows() 期望参数 1 为资源, bool 值

php - 如何在 PHP 中一次通过多个值搜索多维数组?

php - 从 PHP while 循环中删除 MySQL 行

Mysql 集群插入停止 TCROLLBACKREQ

PHP多部分表单数据PUT请求?

mysql - 多个条件匹配时如何从sql数据库中读出数据

javascript - Dropbox 长轮询对一个文件的更改(Javascript API)