楼主:
herbacin (herbacin)
2017-08-03 08:53:08请问一下 假设我有一个cronjob(1) 每5分钟跑一次,
主要将取得资料写到A table
另外有一支cronjob(2) 24:00跑一次, 主要功能是取出A table资料进行计算
但这样当24:00的时候 cronjob(1)与cronjob(2) 会同时执行
这样cronjob(2)再取table A的时候, cronjob(1)可能还没有写入完毕
要怎样才可以等cronjob(1) 再跑 cronjob(2)呢?
谢谢
作者:
wsybu (%小步步%)
2017-08-03 09:39:00cronjob(2) 设定在12:01~12:04之间跑?
楼主:
herbacin (herbacin)
2017-08-03 09:40:00那你必须确保 1 在4分钟内完成才可以
作者:
imcar (imcar)
2017-08-03 10:22:00找个地方写log,job1先跑,插flag,job2等待job1的flag
同上,job1执行时摸(touch)一个档案当guardjob2发现那个档案存在就回去等 job1执行完后删除guard
楼主:
herbacin (herbacin)
2017-08-03 14:33:00意思是透过php去检查那个log档案是否存在, 如果存在exit()这样吗?那crontab(2) 排成时间是否要设的很短, 然后一直检查?我有看到别人作法是使用 &&可以确保第一支执行完在执行第二支
那是连续跑job1 && job2 你没有每次都要跑job1吧间隔不用设得很短 你五分钟跑一次 了不起跳过一次不然就跟他错开 job1 24:00执行 你job2可以从24:02开始执行 或者跟laravel一样 跑一个dispatcher 由他检查时间和等候状态再呼叫job1或job2 方法很多
作者:
cf1064 (蚵仔)
2017-08-03 21:32:00存在不要exit(),用一个循环+sleep去重复检查
楼主:
herbacin (herbacin)
2017-08-03 23:41:00楼上意思 crontab(2)的php 不使用crotab去触发?为什么不用exit() 如果使用crontab触发了不离开那该程式不是会重复被触发