我想要做的是监控 mysql 中的一个表,该表总是由 sms 网关自动更新。
该脚本应被持续监控,一旦表中有新条目,应触发执行进一步操作的 php 脚本 ritn。
我如何实现这一目标?
我想要做的是监控 mysql 中的一个表,该表总是由 sms 网关自动更新。
该脚本应被持续监控,一旦表中有新条目,应触发执行进一步操作的 php 脚本 ritn。
我如何实现这一目标?
我已经使用 cron 做了很多次。因此,您的 php 脚本首先查看是否有新条目,然后执行它需要执行的操作(如果有)。如果没有什么可做的,它会立即退出。要记住的一件事是,如果脚本需要很长时间才能运行,您需要确保相应地设置您的 cron 作业,以免它们重叠。
实现此目的的一种简单方法是在表中设置一个特殊列,指示该行是否已由 php 脚本检查。因此,当 php 脚本运行时,它会查找该字段为 false 的所有数据。像这样的东西:
SELECT id from my_table where dealt_with = FALSE;
然后当它在这些行上运行时,它会更新它们:
UPDATE my_table set dealt_with = TRUE where id=1234;
Jocelyn 为带有文档的项目提出了一个非常好的解决方案,否则它对于其他可能想要更改任何内容的开发人员来说是一个杀手,因为它总是被忽视。
MySQL 的限制AFTER UPDATE
是它只能运行 SQL,而不是 PHP 脚本。因此,最好的解决方案是每 * 分钟运行一次CRON作业,以启动 PHP 脚本,该脚本检查自动增量字段(例如id
字段)的最后一个值,例如 mysql_insert_id。使用此逻辑的原因是您不想检查行数,因为其中一些可能已被删除。
我建议在您的表中添加一个 AFTER UPDATE触发器。
每次更新记录时,您的触发代码都会自动执行。
触发器中的代码是 MySQL 语句的列表。