我有一台带有mysql服务器的debian机器。 在mysql上,我有一个表,其中包含许多带有datetime字段的行。 当机器的日期和时间与任何mysql记录中指定的日期和时间匹配时,如何执行php脚本? a)Mysql触发器? b)Deamon在后台运行并每隔n秒检查一次? c)Cron?
让我知道!
答案 0 :(得分:0)
轮询MySQL会起作用但肯定效率不高,尤其是当有很多"触发器"时。 所以使用cronjob。注意:MySQL-Queries无法安排或取消cronjobs。所以(我猜)PHP脚本更新该日期字段也必须安排cronjobs。此外,每次更改列时,您都必须取消之前安排的cronjob并安排新的cronjob。
答案 1 :(得分:0)
由于您无法在Mysql数据库中运行shell命令,因此MySql触发器无效。因此MySQL Scheduler也没用。所以你需要一个外部脚本来帮助。
我建议创建一个(php)脚本并将其添加到crontab以便每分钟运行一次。它的任务是检查数据库中的匹配日期并运行您需要的任何命令。
答案 2 :(得分:0)
我认为最简单的解决方案是尽可能使用at命令。
基本上将数据插入mysql后,请执行以下操作:
1)创建(使用PHP)运行php文件的BASH脚本
script_1.sh 应如下所示:
!#/bin/bash
php /path/to/file.php
并使用以下命令使其可执行:
exec("chmod +x script_1.sh");
2)创建第二个BASH脚本,在所需的时间执行第一个: script_2.sh 应如下所示:
!#/bin/bash
at H:M Y:M:D < script_1.sh
使script_2可执行并使用exec命令运行它。