【问题标题】:Web worker AJAX or web sockets for checking a MYSQL database continuously?用于连续检查 MYSQL 数据库的 Web Worker AJAX 或 Web 套接字?
【发布时间】:2017-04-17 19:28:36
【问题描述】:

大家好,我正在为我的小型初创公司开发一个网站,该网站需要不断检查数据库中的新数据。我是一名机械工程师,没有网页设计和网络通信方面的经验。目前我每秒使用一个 AJAX 请求来检查一个 MYSQL 数据库(使用 PHP)。该代码比较接收到的数据(JSON 格式),如果它与前一个不同,它会触发一个函数来处理新数据并更新 UI。

就在昨晚,我了解了网络工作者、网络套接字和长轮询,并且对我现在拥有的所有新选项感到不知所措。我真的很困惑是否需要更改当前的解决方案以及哪种解决方案是最好的。我想也许我应该创建一个专门的 Web Worker 来处理 AJAX 调用,以避免牺牲 UI 流畅度(网站应该在普通平板电脑上流畅运行)。

任何有经验的人可以给我一些提示和指导吗?我了解了 Pusher API,但我现在想避免使用 API。在阅读了有关 web worker 和 web sockets 之后,我觉得我过去几个月写的所有代码都效率低下……

提前谢谢...

【问题讨论】:

    标签: php mysql ajax web-services sockets


    【解决方案1】:

    你真的应该使用谷歌搜索之前关于类似问题的帖子。

    这里有一些不错的开端:

    或者(在 SO 之外):

    总结一下:

    我可能会为每个客户端选择一个 Web 套接字连接。

    我会避免轮询 MySQL 数据库(为什么要这样做?)。真的没必要浪费资源。将代码添加到update 网关更容易,因此,每当更新数据库时,都会为所有侦听套接字安排一个事件......如果我使用多个进程/机器,我会考虑使用 Redis for Pub/Sub我的服务器应用程序。

    更简单的工作流程如下所示:

    1. 浏览器页面加载 -> Websocket 连接。

      Websocket 连接 -> 订阅(收听)Redis 频道。

    2. SQL 更新 ->(触发)Redis 发布到通道。

      Redis 频道发布 -> 通知(订阅的)websocket。

      频道通知 -> 向客户端发送 Web 套接字消息。

    祝你好运。

    【讨论】:

      【解决方案2】:

      这里有一个简单的推送想法,可能对你有用:

      1. 创建一个触发器,在插入/更新完成时写入另一个表并在那里记录任何相关数据(对您有用的东西)

      2. 在应用初始加载时,从辅助“日志”表中获取最新更新,存储行/事件 ID 以供以后比较

      3. 创建一个poller(服务器发送的事件)来监听特定脚本,该脚本监视所说的“日志”表

      4. 创建一个 CRON 作业,每 X 次从步骤 3 执行脚本

      (警告:#3 可能无法在 IE 中运行,因此您需要备用方案或其他解决方案)

      【讨论】:

        猜你喜欢
        • 2012-09-20
        • 2023-03-10
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-26
        相关资源
        最近更新 更多