[英]handling concurrency in cron php
我正在设置一个cron作业,每分钟我想了解并发性,就执行脚本page.php。 脚本本身需要15分钟才能完成,那么cron将如何运行?
Lets take a time frame of 15 minutes, how many crons will run in that time? 1 or 15?
will cron runs till its completion or it can be interrupted?
Thanks.
当您通过cron启动php脚本时,它将一直运行直到完成或超过执行时间。 无论最后一个脚本是否仍在运行,系统都会始终启动该脚本的新实例。
如果您知道脚本运行了很长时间,则应该设置一个bash脚本来检查脚本是否已经在运行,如果不是这种情况,则仅启动php脚本。
Cron不会为您处理并发-您的脚本必须这样做。
事实证明,这很容易,因为有一个简单的PHP操作,即atomic: unlink()
。
我们倾向于以这种方式使用它:
unlink()
unlink()
touch()
es全局标志文件并退出(这确保一次cron运行最多启动一个实例) touch()
es全局标志文件以重新开始循环 这样,cron运行将导致可并发性,并以可记录的方式被忽略。
这取决于您计划的任务/计划设置。 您可以配置为启动15次PHP脚本,或者在完成上一个作业后启动它。
您的计划任务/计划任务可能会被自身中断,外部信号或您在计划任务/计划任务中进行的配置打断(如果在N分钟内未完成,请停止作业...)。
希望有帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.