Laravel localhost工作,但heroku给出500错误 [英] Laravel localhost works, but heroku gives 500 error
问题描述
我正在从事需要将一些数据从excel转换为数据库的项目。这与在laravel的本地主机上工作正常,但是当去到heroku时,它会给我一个500内部服务器错误。
我在heroku搜索了一些指向可能的东西是的,那么我发现heroku的数据库有两个从请求中插入的值。所以这意味着代码会循环两次,但会发生错误。
我试图在代码中查找错误4个小时,而且我没有找到什么...
以下是代码:
公共职能insertFromExcel(){
$ excel = new \Maatwebsite\Excel\Facades\Excel();
$ data = $ excel :: load('../../../ excel_files / relacao_5.xls',function($ reader){
}) - >得到();
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') - >其中('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
]);
$ {
$ funcionario_pis_pasep = DB :: table('funcionario') - >其中('matricula','=',$ row ['codfun' ]) - >摘下( 'pis_pasep');
if($ funcionario_pis_pasep == null || $ funcionario_pis_pasep == 0){
DB :: table('funcionario')
- > where('id', $ funcionario_id)
- > update([
'pis_pasep'=> $ row ['pis_pasep']
]);
$ b $ funcionario_setor = DB :: table('funcionario') - >其中('matricula','=',$ row [' codfun ']) - >摘下(' setor_id');
if($ funcionario_setor == null){
DB :: table('funcionario')
- >其中('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')
- >其中('funcionario.id','=',$ funcionario_id)
- > pluck('gerente.id');
if($ gerente == null){
$ user_id = DB :: table('usuario') - > insertGetId(['senha'=&'12345',' nivel'=> 3]);
$ b DB :: table('gerente') - > insert([
'funcionario_id'=> $ funcionario_id,$ b $'usuario_id'=> $ user_id
]);
if(strpos($ row ['descrnivcarg','COORDENADOR')!== false){
$ coordenador = DB ::表('coordenador')
- >加入('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']) ;
$ b DB :: table('coordenador') - > insert([
'funcionario_id'=> $ funcionario_id,$ b $'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]);
$ b DB :: table('supervisor') - > insert([
'funcionario_id'=> $ funcionario_id,$ b $'usuario_id'=> $ user_id
]);
$ b $ if 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]);
$ b DB :: table('estagiario') - > insert([
'funcionario_id'=> $ funcionario_id,$ b $'usuario_id'=> $ user_id
]); ('''''','''''''''''''''''')$ - $ $ $ $ $ $ $ $ $' >摘下( 'ID');
if($ cargo_id == null){
$ cargo_id = DB :: table('cargo') - > insertGetId(['nome'=> $ row ['descrnivcarg ]]);
$ b $ operario = DB :: table('operario')
- > join('funcionario','operario.funcionario_id','= ','funcionario.id')
- >其中('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();
返回$ funcionario_db;
更多的时间试图弄清楚代码发生了什么,我发现这是Apache超时问题。
我找到了答案这里。
积分: Eric Cope
I'm working in a project that needs to convert some data from excel to database. This is working fine in local host with laravel, but when goes to heroku, it gives me a 500 internal server error.
I searched in heroku for something that point what could be, then I discovered that the heroku's database has 2 values inserted from the requests. So it means that the code loops twice, but then the error occurs.
I tried to find the error in the code for 4 hours, and I didn't found what is going on...
Here is the code:
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;
}
After some more hours trying to figure out what is going on with the code, I discovered that it was a problem with the Apache timeout.
I found the answer here.
Credits: Eric Cope
这篇关于Laravel localhost工作,但heroku给出500错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!