[英]Update database table cyclically every 5 minutes
我必须根据其他表数据的选择,使用复杂且昂贵的查询来填充和更新MySql数据库表之一。 当我对它进行查询时,该表不必总是完全更新,但是我希望每5分钟进行一次循环更新。
此自动更新应该是无限的,我需要确保它永不停止。
经过一番研究,我找到了一些解决方案,但是我不知道哪种对安全性和性能更好。
其中一项可能是我的目标:
我认为第一种解决方案可能会很昂贵,因为查询很复杂,每秒可能有很多请求,但是结果总是会更新。 我没有Cron Job的经验,所以我不知道这是否是个好主意。 对于第三个解决方案,我仍然没有运行事件的数据库特权,但是我想知道它是否是有效的解决方案。
欢迎其他所有解决方案,谢谢。
我会选择Cron Job。
cron -u apache -e
)。 */5 * * * * php /path/to/script.php
)。 我有一个在根目录下运行的Cron作业,它工作得很好。 我的问题是该项目具有专用的日志记录机制 ,该日志文件将由apache用户创建。 通过从root运行它,有时该文件将由root创建,然后,由apache执行的脚本将无法追加到日志中。
我也有一个电子邮件脚本,该脚本每2分钟运行一次,持续1小时。 事实证明,由于应用程序中的错误,数据库中插入了无效的电子邮件地址(somethingwithoutatsign.com),这使PHPMailer库引发错误。 之后,我添加了一个catch块,该异常块将在引发异常时向我发送电子邮件。 现在,如果脚本由于执行不正确而停止运行,我马上就会知道。
不要使用cron。 想一想如果一个实例超过5分钟,而下一个实例启动,将会发生什么情况。 最终,您将陷入困境,成百上千的副本陷入困境。
而是让一个作业循环执行更新。 (好的,您可能有一项cron作业,以执行“保持活动”的任务,如果查询死了,则重新启动该查询。)
工作会
CREATE TABLE new ...
INSERT INTO new SELECT complex-stuff...
RENAME TABLE real TO old, new TO real;
DROP TABLE old;
loop.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.