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);
推荐文章: