Laravel5.3 定时任务重复执行怎么解决????
在Laravel5.3中添加了一个定时任务,每十分钟执行一次,,定时任务的功能是往数据库插入数据,,发现定时任务总是重复执行,求大神赐教
$schedule->call(function(){
\Log::info('test');
$is_empty_table = \DB::table('waybill_statistics')->count();
\Log::info('test_is_empty_table',array($is_empty_table));
if(!$is_empty_table){
$data = \DB::table('waybills')->select('company_id','route_id','division_id','driver_id','vehicle_id','date','status')->get()->toArray();
}else{
$last_data = \DB::table('waybill_statistics')->orderBy('id','desc')->take(1)->get();
\Log::info('test_max_waybill_statistics_id',array($last_data[0]->id));
$last_id_in_waybill = \DB::table('waybills')->where([['company_id',$last_data[0]->company_id],['route_id',$last_data[0]->route_id],['division_id',$last_data[0]->division_id],['driver_id',$last_data[0]->driver_id],['vehicle_id',$last_data[0]->vehicle_id],['date',$last_data[0]->date],['status',$last_data[0]->status]])->value('id');
\Log::info('test_last_id_in_waybill',array($last_id_in_waybill));
$data = \DB::table('waybills')->select('company_id','route_id','division_id','driver_id','vehicle_id','date','status')->where('id','>',$last_id_in_waybill)->get()->toArray();
}
for($i=0;$i<count($data);$i++){
$w_s = new Waybill_Statistics();
$w_s -> company_id = $data[$i] -> company_id;
$w_s -> route_id = $data[$i] -> route_id;
$w_s -> division_id = $data[$i] -> division_id;
$w_s -> driver_id = $data[$i] -> driver_id;
$w_s -> vehicle_id = $data[$i] -> vehicle_id;
$w_s -> date = $data[$i] -> date;
$w_s -> status = $data[$i] -> status;
$w_s -> count= 1;
$res = $w_s->save();
\Log::info('test_add_time',array(date('Y-m-d H:i:s')));
\Log::info('test_count',array($res->id));
}
})->everyTenMinutes();
是不是在多台服务器上都配置定时任务了
不是的,在本地Homestead环境下运行的
@leo 不是的,在本地Homestead环境下运行的
基于什么判断重复执行了?
@leo 我有打印log,log显示在同一个时间点执行了三次
你的 test_add_time 是写在 for 里面的……当然是会出现多次了
@leo 其它的也是多次
@leo 大神,求解答
检查你的crontab文件和cron -l的输出
@leo ????
@leo 是我自己弄错了,,,不知道为什么虚拟机里有挂了两个schedule的计划任务,sudo crontab -e里的计划任务注掉就好了
@树袋熊 厉害了
@leo 大神,有个问题请教,我的情况是这样的,在老服务器上配置了 0点执行的定时,后来换了一个新的服务器,改成2点执行一次,一个任务0点执行一次 2点也执行一次,这是这么回事呢?找不到原因 ,请大神指教下。。
@gaoxiang 八成是老服务器还在运行
@leo 哦,对,感谢大神 老服务器上忘记关了