PHP 长轮询,无需过多的数据库访问

标签 php

我一直很喜欢长轮询的想法;在我的开发服务器上,我玩过各种通知/新的发布系统,每个系统都使用 javascript 来保持连接并“等待”某种响应。我一直对这个的许多实现有疑问,它们都涉及重复轮询 mySQL 服务器以检查新行。

用于长轮询请求的专用服务器是可能的,但是为每个客户端连续轮询(大约每 3 秒似乎很常见)数据库服务器似乎非常浪费。对于一些相对微不足道的事情来说,这是一种巨大的资源浪费。

有连击方法吗?

最佳答案

如果您的具体问题是您试图避免通过数据库通知事件,您可能应该考虑使用共享内存或信号量。

您可以监控共享内存,而不是持续轮询数据库。当有东西写入数据库时​​(我假设是某种消息队列),您可以通过共享内存标记该事件。监听代码会检测到这一点,然后才建立数据库连接来检索消息。或者,您可以使用共享内存来完全取代数据库的使用。

php 信号量和共享内存函数的引用在这里 - http://uk.php.net/manual/en/ref.sem.php

关于PHP 长轮询,无需过多的数据库访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4834829/

相关文章:

php - Android 客户端 : Web service - what's the correct SOAP_ACTION, METHOD_NAME、NAMESPACE、我应该使用的 URL?

php - 在 WooCommerce 购物车页面中添加费用的自定义复选框

php - 使用 Composer 找不到 Google APIClient 类

php - 使用 join 构建单个 SQL 查询。这可能吗?

php - 如何捕获 fatal error

php - 我不想让我网站的某些页面出现在搜索引擎中

javascript - WordPress 主题中的奇怪 URL 在网站加载时导致错误

php - 通过比较 2 个数组,输入 <select> 在 PHP 中选择无法正常工作

php - 单击时将数量添加到背景位置(jQuery)

php - 通过 PHP 脚本将数据插入 MySQL 表 - 命令行