【发布时间】:2018-08-16 19:28:58
【问题描述】:
我正在使用 24/1 天运行的 PHP 机器人向另一台服务器发送请求
起初我在考虑每 10 秒检查一次是否发送新数据,但这会很糟糕,因为每天会有 8640 个请求,更不用说需要解析的数据的大小和数量,等,然后再将其发送到另一台服务器
我认为有没有更好的方法来检测mysql的变化并通知PHP
当有新数据时,mysql 发送通知,通知与新数据相关的唯一 id
【问题讨论】:
我正在使用 24/1 天运行的 PHP 机器人向另一台服务器发送请求
起初我在考虑每 10 秒检查一次是否发送新数据,但这会很糟糕,因为每天会有 8640 个请求,更不用说需要解析的数据的大小和数量,等,然后再将其发送到另一台服务器
我认为有没有更好的方法来检测mysql的变化并通知PHP
当有新数据时,mysql 发送通知,通知与新数据相关的唯一 id
【问题讨论】:
你可以使用mysql的触发函数,也许会有帮助。
【讨论】:
我相信您可以拥有一个包含计数信息的文件,并且对于每个请求,您都可以要求查询的记录计数。
SELECT COUNT(?) FROM .....
如果计数高于上次发送请求的时间,您唯一可以做的就是减去它,这样,更改的数量。然后,您可以发出另一个请求,仅查找更改。
SELECT ? FROM ? WHERE ? ORDER BY `ID` DESC LIMIT $numberOfChanges
我相信 ID 是自增的,这样一来,变化就会有更高的 ID 的
【讨论】:
查看这个堆栈溢出问题/答案: When a new row in database is added, an external command line program must be invoked
创建一个 MySQL 触发器,以便在添加新数据时更新一个仅用于保存此信息的特殊表。您的 cron 作业和/或 php 机器人将每 10 秒检查一次该表的信息。如果它有更改,则将该信息发送到其他服务器并清除特殊表,否则结束并等待接下来的 10 秒。
【讨论】: