Laravel FatalErrorException: недостаточно памяти - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь экспортировать файл zip , но получаю сообщение об ошибке:

Fatal Error Exception in ProjectFinding.php line 387:
Out of memory (allocated 382468096) (tried to allocate 1346263 bytes)

php.ini set memory_limit=2048M.Что-то не так?Скажите, пожалуйста, почему эта ошибка вызвана ошибкой в коде или памятью и как ее исправить?

В этой строке отображается ошибка

 $zip->addFromString($nfile[1], file_get_contents($file));

1 Ответ

0 голосов
/ 17 сентября 2018
public function excel_exports($input, $p_id) {
        $find = new Project();
        $tmp_name = time();
        $path = storage_path("files/" . $p_id);
        if (!is_dir($path)) {
            umask(0);
            mkdir($path, 0777, true);
            chmod($path, 0777);
        }

        $project = new Project();
        $prodata = $project->getById($p_id);
        $zipfile = $prodata->id.'.zip';
        $excelname = $prodata->id;
        $data = $findingObj->getAll($p_id);
        $colspan = 1;
        foreach ($data as $row) {
            $this->_saveDocumentsFiles($row);
            $doc_cc = 0;
            foreach ($row->document as $doc) {
                $doc_cc = $doc_cc + $doc->doc_files->count();
            }
            if ($doc_cc > $colspan) {
                $colspan = $doc_cc;
            }
        }
        Excel::create($excelname, function($excel) use ($data, $colspan) {
            $excel->sheet('projectfinding', function($sheet) use ($data, $colspan) {
                $sheet->loadView('admin.project.finding.excel_file_exports')->with(["targetRow" => 5, "targetCol" => "A", "targetView" => "admin.project.finding.excel_pdf", 'data' => $data, 'colspan' => $colspan]);
            });
        })->save('xls', $path, false);
        $source = storage_path('files');
        $this->zip($source, $zipfile);
        header("Content-type: application/zip");
        header("Content-Disposition: attachment; filename=$zipfile");
        readfile($zipfile);
        unlink(public_path($zipfile));
        $rmpath = storage_path("files/" . $p_id);
        $this->_rrmdir($rmpath);
        return true;
    }

in this code i simply change p_id with id it will show error in $path and $rmpath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...