我必须根据从其他表的数据中进行的选择,使用复杂且昂贵的查询来填充和更新我的 MySql 数据库表之一。当我对其进行查询时,该表不需要始终完全更新,但我希望每 5 分钟进行一次循环更新。
这个自动更新应该是无限的,我需要确保它永远不会停止。
经过一些研究,我找到了一些解决方案,但我不知道哪个对安全性和性能更好。
其中一个可能是我的目标:
- 不要每次都创建表并从 php 进行复杂的查询以获得所需的结果
- 创建一个循环重复并更新表数据库的 php 脚本,可能使用 Cron Job。
- 使用 sql 事件更新表
我认为第一个解决方案可能会很昂贵,因为查询很复杂并且每秒可能有很多请求,但结果总是会更新。我没有关于 Cron Job 的经验,所以我不知道这是否是个好主意。对于第三种解决方案,我仍然没有运行事件的数据库权限,但我想知道它是否是一个有效的解决方案。
欢迎所有其他解决方案,谢谢。
最佳答案
不要使用 cron。想一想如果一个实例超过 5 分钟而下一个实例又启动了会发生什么。最终,您将有数百个副本陷入相互绊倒的泥潭。
取而代之的是在一个循环中执行更新的单个作业。 (好吧,你可以有一个 cron 作业来执行“保持事件”任务,如果它死了就重新启动查询。)
这份工作会
CREATE TABLE new ...
INSERT INTO new SELECT complex-stuff...
RENAME TABLE real TO old, new TO real;
DROP TABLE old;
loop.
关于php - 每 5 分钟循环更新数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33110442/