我在cpanel laravel上导入excel文件时出现503错误


<?php
namespace AppImports;
use AppModelsExcelValidation;
use IlluminateSupportCollection;
use MaatwebsiteExcelConcernsHasReferencesToOtherSheets;
use MaatwebsiteExcelConcernsToCollection;
use MaatwebsiteExcelConcernsWithCalculatedFormulas;
class Validation implements ToCollection, WithCalculatedFormulas, HasReferencesToOtherSheets
{
private $upload_id = '';
/**
* Validation constructor.
*
* @param $id
*/
public function  __construct($id)
{
$this->upload_id = $id;
}
/**
* @param Collection $rows
*/
public function collection(Collection $rows)
{
ini_set("max_execution_time", "-1");
ini_set("memory_limit", "-1");
set_time_limit(0);
foreach ($rows as $row) {
if (!empty($row[6]) && !empty($row[3]) && (strtolower($row[6]) == 'accurate' ||  strtolower($row[6]) == 'error')) {
$obj = new ExcelValidation();
$obj->status = strtolower($row[6]);
$obj->user_id =  loginId();
$obj->excel_upload_id =  $this->upload_id;
$obj->day_id =  (int)date('w');
$obj->week =  (int)date('W');
$obj->month_id =  (int)date('m');
$obj->year =  (int)date('Y');
$obj->source = $row[3];
$obj->save();
}
}
}
}

这是我的代码。在我的本地机器上,一切都很好,但当尝试在实时服务器上导入文件时,会出现503错误。我已经为它的解决方案工作了三天,但都是徒劳的。我已经将execution_time更新为1600,将post_max_size更新为1024mbs,并将所有内容更新为最大值,但不起作用。这是错误。服务不可用由于维护停机或容量问题,服务器暂时无法为您的请求提供服务。请稍后再试。此外,在尝试使用ErrorDocument处理请求时,遇到503服务不可用错误如果有人知道解决方案,请帮助我。感谢

使用WithChunkReading解决了我的问题。问题是,我的excel文件与同一文件中的其他excel文件有参考,当它计算公式时,读取数据花费了太多时间。所以我用了";with ChunkReading";在我看来,它的效果很好。这是我的代码:

<?php
namespace AppImports;
use AppModelsExcelValidation;
use IlluminateSupportCollection;
use MaatwebsiteExcelConcernsHasReferencesToOtherSheets;
use MaatwebsiteExcelConcernsToCollection;
use MaatwebsiteExcelConcernsWithCalculatedFormulas;
use MaatwebsiteExcelConcernsWithChunkReading;
class Validation implements ToCollection, WithCalculatedFormulas, HasReferencesToOtherSheets, **WithChunkReading**
{
private $upload_id = '';
/**
* Validation constructor.
*
* @param $id
*/
public function  __construct($id)
{
$this->upload_id = $id;
}

public function chunkSize(): int
{
return 1000;
}
/**
* @param Collection $rows
*/
public function collection(Collection $rows)
{
$arr = [];
$count = 0;
foreach ($rows as $row) {
if (!empty($row[6]) && !empty($row[3]) && (strtolower($row[6]) == 'accurate' ||  strtolower($row[6]) == 'error')) {
$arr[$count]['status'] = strtolower($row[6]);
$arr[$count]['user_id'] = loginId();
$arr[$count]['excel_upload_id'] = $this->upload_id;
$arr[$count]['day_id'] = (int)date('w');
$arr[$count]['week'] = (int)date('W');
$arr[$count]['month_id'] = (int)date('m');
$arr[$count]['year'] = (int)date('Y');
$arr[$count]['source'] = $row[3];
$count++;
}
}
ExcelValidation::insert($arr);
}
}

相关内容