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();
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 15
leo

是不是在多台服务器上都配置定时任务了

6年前 评论

不是的,在本地Homestead环境下运行的

6年前 评论

@leo 不是的,在本地Homestead环境下运行的

6年前 评论
leo

基于什么判断重复执行了?

6年前 评论

@leo 我有打印log,log显示在同一个时间点执行了三次

file

6年前 评论
leo

你的 test_add_time 是写在 for 里面的……当然是会出现多次了

6年前 评论
leo

检查你的crontab文件和cron -l的输出

6年前 评论

@leo 是我自己弄错了,,,不知道为什么虚拟机里有挂了两个schedule的计划任务,sudo crontab -e里的计划任务注掉就好了

6年前 评论
donglianyou

@树袋熊 厉害了

6年前 评论

@leo 大神,有个问题请教,我的情况是这样的,在老服务器上配置了 0点执行的定时,后来换了一个新的服务器,改成2点执行一次,一个任务0点执行一次 2点也执行一次,这是这么回事呢?找不到原因 ,请大神指教下。。

file

file

5年前 评论
leo

@gaoxiang 八成是老服务器还在运行

5年前 评论

@leo 哦,对,感谢大神 老服务器上忘记关了

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!