Php 每5分钟周期性更新数据库表
我必须根据从其他表的数据中选择的内容,使用复杂而昂贵的查询来填充和更新我的一个MySql数据库表。当我对这个表进行查询时,它不需要总是完全更新,但我希望每5分钟进行一次循环更新 这个自动更新应该是无限的,我需要确保它永远不会停止 经过一些研究,我找到了一些解决方案,但我不知道哪一个对安全性和性能更好 其中之一可能是我的目标:Php 每5分钟周期性更新数据库表,php,mysql,performance,mysqli,cyclic,Php,Mysql,Performance,Mysqli,Cyclic,我必须根据从其他表的数据中选择的内容,使用复杂而昂贵的查询来填充和更新我的一个MySql数据库表。当我对这个表进行查询时,它不需要总是完全更新,但我希望每5分钟进行一次循环更新 这个自动更新应该是无限的,我需要确保它永远不会停止 经过一些研究,我找到了一些解决方案,但我不知道哪一个对安全性和性能更好 其中之一可能是我的目标: 不要每次都从php创建表并进行复杂查询以获得所需的结果 创建一个循环重复的php脚本并更新表db,可能使用Cron作业 使用sql事件更新表 我认为第一种解决方案可能会很昂
欢迎使用所有其他解决方案,谢谢。我会选择Cron工作
cron-u apache-e
)*/5****php/path/to/script.php
)我还有一个电子邮件脚本,每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.
解决方案#2可能是最优的,它是一个由cronjob触发的php scit,用于处理表的更新。您是否在其中缓存查询结果?不,我不需要缓存结果查询,因为我不必输出它们。此表用作其他大表串联的筛选器。类似于一个只包含30个项目的表,从其他表中提取,在这一时刻对于特定属性来说是最好的。我不知道如何用cron作业实现它,但我能确保循环永远不会停止吗?您可以在
MySQL