【问题标题】:Detect change from mysql检测来自 mysql 的更改
【发布时间】:2018-08-16 19:28:58
【问题描述】:

我正在使用 24/1 天运行的 PHP 机器人向另一台服务器发送请求

起初我在考虑每 10 秒检查一次是否发送新数据,但这会很糟糕,因为每天会有 8640 个请求,更不用说需要解析的数据的大小和数量,等,然后再将其发送到另一台服务器

我认为有没有更好的方法来检测mysql的变化并通知PHP

当有新数据时,mysql 发送通知,通知与新数据相关的唯一 id

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你可以使用mysql的触发函数,也许会有帮助。

    https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html

    【讨论】:

      【解决方案2】:

      我相信您可以拥有一个包含计数信息的文件,并且对于每个请求,您都可以要求查询的记录计数。

      SELECT COUNT(?) FROM .....
      

      如果计数高于上次发送请求的时间,您唯一可以做的就是减去它,这样,更改的数量。然后,您可以发出另一个请求,仅查找更改。

       SELECT ? FROM ? WHERE ? ORDER BY `ID` DESC LIMIT $numberOfChanges
      

      我相信 ID 是自增的,这样一来,变化就会有更高的 ID 的

      【讨论】:

        【解决方案3】:

        查看这个堆栈溢出问题/答案: When a new row in database is added, an external command line program must be invoked

        创建一个 MySQL 触发器,以便在添加新数据时更新一个仅用于保存此信息的特殊表。您的 cron 作业和/或 php 机器人将每 10 秒检查一次该表的信息。如果它有更改,则将该信息发送到其他服务器并清除特殊表,否则结束并等待接下来的 10 秒。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-19
          • 2017-02-10
          • 1970-01-01
          • 2017-05-19
          • 1970-01-01
          • 2019-06-07
          相关资源
          最近更新 更多