您的问题的解决方案称为长轮询,您将在此SO问题中找到更多信息.
我们的想法是使用当前的AJAX加载信息,但如果没有任何内容可以返回,服务器将不会立即返回响应.相反,它只会在返回空响应之前保持连接打开预定义的秒数,或者在消息可用时立即返回.最大响应时间应足够长,以使其值得,但不要太长,以免在客户端冒超时 - 大约20秒左右应该没问题.
虽然此解决方案允许您减少对服务器的HTTP调用次数,但它只是改变了问题:PHP脚本在等待消息可用时仍需要轮询数据库.如果你期望中等流量,你会没事的.但是如果你想要能够认真地扩展,你将不得不寻找另一种解决方案.
最好的解决方案是使用适当的消息队列而不是数据库,例如Amazon SQS或IronMQ.
这些将无限制地扩展,并将提供诸如长轮询之类的功能(不确定IronMQ,但SQS肯定会这样做).
| 归档时间: |
|
| 查看次数: |
1271 次 |
| 最近记录: |