laravel 操作mysql 报错 MySQL server has gone away

laravel 中 fork了多个进程,每个进程循环插入数据到mysql,出现部分数据未插入进去,报错信息:MySQL server has gone away (SQL: insert into wgj_test (key, t_id, t_value) values (2, 101, 1095441)),mysql已设置 max_allowed_packet=50M,下面是代码,请大家帮我分析下哪里的问题啊:

$group = DB::table('wgj_test_2')->get()->toArray();
        $data = array_chunk($group,50);
        $k = 0;
        while ($k < count($data)) {
            $pid = pcntl_fork();
            if($pid == -1){
                die('error');
            }
            if($pid > 0){
                cli_set_process_title("wgj_parent");
            }elseif($pid == 0){
                foreach($data[$k] as $i => $j) {
                    DB::beginTransaction();
                    try{
                        DB::table('wgj_test')->insert([
                            'key'=>$k,
                            't_id'=>$j->id,
                            't_value'=>$j->cluster_id,
                        ]);
                        DB::commit();
                    }catch (\Exception $e){
                        DB::rollBack();
                        Log::error('wgj-test:'.$e->getMessage());
                    }

                };
//                var_dump('遍历第'.$k .'次----元素个数:'.count($v));
//                sleep(1);
                  exit();
            }
            $k++;
        }
        pcntl_wait($status);
        var_dump(1212);
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

脚本常驻吗?

3年前 评论
Arsenal_jie 3年前
show variables like '%wait_timeout%';

检查下DB连接建立开始到Laravel执行结束是不是超过了MySQL的这个参数

3年前 评论
随波逐流

项目没有这个方面的需求,很少接触,但是看你的代码怪怪的。

www.cnblogs.com/rxbook/p/10763359.... www.php.net/manual/zh/function.pcn...

好像不是你这么用的吧 - -

3年前 评论

连接超时,写个断线重连吧

3年前 评论
黑将军

操作数据库之前加个 DB::reconnect(); 试试

3年前 评论

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