我有一个php脚本,用于检查某个文件夹中的xml文件,然后将每个文件中的信息导入MySQL数据库 .
我想设置一个cronjob来运行每分钟,以便随时添加新文件,它们几乎可以立即导入,而无需我手动ssh并运行脚本 .
我有一个if语句,它检查文件是否存在,如果它们只运行代码,否则回显“No files” .
我想知道,如果持续不断地运行会有什么风险,是否会占用过多的资源?等等
每分钟运行一个进程真的没有什么问题...除了通常的陷阱[我包括缓解方法] . 我想说现代电脑真的很长一段时间 . 如果您没有周期,那么每分钟额外的一些系统调用是错误的 .
如何解决:使脚本获取对文件的独占锁定 . 你可以把你的pid写到一个文件,但那很麻烦 . 如果您无法获取独占锁,则以前的版本正在运行,因此您应该退出 .
这是flock()的PHP接口:PHP flock()
如果某些事情需要“一直”完成,也许它应该“一直”完成 . 您可以使用文件锁定配方来确保您的脚本保持运行,或者您可以使用monit之类的东西来启动它 . 但你也可以通过使用cron和文件锁定来确保它保持稳定 .
解决方案:在1000次[或某些#]迭代后退出,然后使用cron和文件锁定模型启动新版本[或monit或等效] .
1 回答
每分钟运行一个进程真的没有什么问题...除了通常的陷阱[我包括缓解方法] . 我想说现代电脑真的很长一段时间 . 如果您没有周期,那么每分钟额外的一些系统调用是错误的 .
如何解决:使脚本获取对文件的独占锁定 . 你可以把你的pid写到一个文件,但那很麻烦 . 如果您无法获取独占锁,则以前的版本正在运行,因此您应该退出 .
这是flock()的PHP接口:PHP flock()
如果某些事情需要“一直”完成,也许它应该“一直”完成 . 您可以使用文件锁定配方来确保您的脚本保持运行,或者您可以使用monit之类的东西来启动它 . 但你也可以通过使用cron和文件锁定来确保它保持稳定 .
解决方案:在1000次[或某些#]迭代后退出,然后使用cron和文件锁定模型启动新版本[或monit或等效] .