Я работаю над проектом, которому необходимо преобразовать некоторые данные из excel в базу данных. Это нормально работает на локальном хостинге с laravel, но когда идет к герою, это дает мне 500 внутренних ошибок сервера.
Я искал в героике что-то, что указывало на то, что могло бы быть, тогда я обнаружил, что в базе данных герою есть 2 значения, вставленные из запросов. Таким образом, это означает, что код дважды повторяется, но затем возникает ошибка.
Я попытался найти ошибку в коде в течение 4 часов, и я не нашел, что происходит …
Вот код:
public function insertFromExcel(){ $excel = new \Maatwebsite\Excel\Facades\Excel(); $data = $excel::load('../../../excel_files/relacao_5.xls', function ($reader) { })->get(); foreach ($data as $row) { //-----------------------------------------Verifica Setor------------------------------------- if(isset($row['nome_setor'])){ $setor_id = DB::table('setor')->where('nome', '=', $row['nome_setor'])->pluck('id'); if ($setor_id == null) { $setor_id = DB::table('setor')->insertGetId([ 'nome' => $row['nome_setor'] ]); } } else{ $setor_id = null; } //-----------------------------------------Verifica Funcionario-------------------------------- $funcionario_id = DB::table('funcionario')->where('matricula', '=', $row['codfun'])->pluck('id'); if ($funcionario_id === null) { $funcionario_id = DB::table('funcionario')->insertGetId([ 'nome' => $row['nome_func'], 'matricula' => $row['codfun'], 'pis_pasep' => $row['pis_pasep'], 'data_admisao' => $row['admissao'], 'setor_id' => $setor_id ]); } else{ $funcionario_pis_pasep = DB::table('funcionario')->where('matricula', '=', $row['codfun'])->pluck('pis_pasep'); if($funcionario_pis_pasep == null || $funcionario_pis_pasep == 0){ DB::table('funcionario') ->where('id', $funcionario_id) ->update([ 'pis_pasep' => $row['pis_pasep'] ]); } $funcionario_setor = DB::table('funcionario')->where('matricula', '=', $row['codfun'])->pluck('setor_id'); if($funcionario_setor == null){ DB::table('funcionario') ->where('id', $funcionario_id) ->update([ 'setor_id' => $setor_id ]); } } //-----------------------------------------Verifica Cargos-------------------------------- if (strpos($row['descrnivcarg'], "GERENTE") !== false) { $gerente = DB::table('gerente') ->join('funcionario', 'gerente.funcionario_id', '=', 'funcionario.id') ->where('funcionario.id', '=', $funcionario_id) ->pluck('gerente.id'); if ($gerente == null) { $user_id = DB::table('usuario')->insertGetId(['senha' => '12345', 'nivel' => 3]); DB::table('gerente')->insert([ 'funcionario_id' => $funcionario_id, 'usuario_id' => $user_id ]); } } if (strpos($row['descrnivcarg'], "COORDENADOR") !== false) { $coordenador = DB::table('coordenador') ->join('funcionario', 'coordenador.funcionario_id', '=', 'funcionario.id') ->where('funcionario.id', '=', $funcionario_id) ->pluck('coordenador.id'); if ($coordenador == null) { $user_id = DB::table('usuario')->insertGetId(['senha' => '12345']); DB::table('coordenador')->insert([ 'funcionario_id' => $funcionario_id, 'usuario_id' => $user_id ]); } } if (strpos($row['descrnivcarg'], "SUPERVISOR") !== false) { $supervisor = DB::table('supervisor') ->join('funcionario', 'supervisor.funcionario_id', '=', 'funcionario.id') ->where('funcionario.id', '=', $funcionario_id) ->pluck('supervisor.id'); if ($supervisor == null) { $user_id = DB::table('usuario')->insertGetId(['senha' => '12345', 'nivel' => 2]); DB::table('supervisor')->insert([ 'funcionario_id' => $funcionario_id, 'usuario_id' => $user_id ]); } } if (strpos($row['descrnivcarg'], "ESTAGIARIO") !== false) { $estagiario = DB::table('estagiario') ->join('funcionario', 'estagiario.funcionario_id', '=', 'funcionario.id') ->where('funcionario.id', '=', $funcionario_id) ->pluck('estagiario.id'); if ($estagiario == null) { $user_id = DB::table('usuario')->insertGetId(['senha' => '12345', 'nivel' => 1]); DB::table('estagiario')->insert([ 'funcionario_id' => $funcionario_id, 'usuario_id' => $user_id ]); } } else { $cargo_id = DB::table('cargo')->where('nome', '=', $row['descrnivcarg'])->pluck('id'); if ($cargo_id == null) { $cargo_id = DB::table('cargo')->insertGetId(['nome' => $row['descrnivcarg']]); } $operario = DB::table('operario') ->join('funcionario', 'operario.funcionario_id', '=', 'funcionario.id') ->where('operario.id', '=', $funcionario_id) ->pluck('operario.id'); if ($operario == null) { DB::table('operario')->insert([ 'funcionario_id' => $funcionario_id, 'cargo_id' => $cargo_id, ]); } } } $funcionario_db[] = DB::table('funcionario')->select('matricula', 'nome', 'data_admisao', 'pis_pasep')->get(); return $funcionario_db; }
Через несколько часов, пытаясь понять, что происходит с кодом, я обнаружил, что это проблема с таймаутом Apache.
Я нашел ответ здесь .
Кредиты: Эрик Коуп
Я обнаружил, почему у меня была ошибка 500. Это было из-за неправильной настройки даты.
Итак, эта почта решила мою проблему.
Во время исследования, чтобы найти ошибку, я обнаружил, что у laravel есть отладочные сообщения при развертывании. Поэтому я изменяю режим отладки на true.
каталог: "laravel / config / app.php"
/* |-------------------------------------------------------------------------- | Application Debug Mode |-------------------------------------------------------------------------- | | When your application is in debug mode, detailed error messages with | stack traces will be shown on every error that occurs within your | application. If disabled, a simple generic error page is shown. | */ 'debug' => env('APP_DEBUG', true),