Загрузка и чтение больших файлов с использованием хранилища Laravel - PullRequest
0 голосов
/ 23 сентября 2019

Мне нужно прочитать большой файл json размером примерно 500 МБ из SFTP.Я использую хранилище Laravel для чтения файла.Сначала я загружаю файл в папку локального хранилища / приложения / общедоступной, затем построчно считываю файл из локальной папки и добавляю содержимое файла в переменную.После этого я декодирую данные json и сохраняю каждую запись в базе данных.Но иногда я получаю ошибку исчерпания памяти и даже ошибку максимального тайм-аута.Я увеличил предел памяти 1024M и время выполнения до 600, используя функции php ini, и перепробовал много решений, но ни одно из них не работает.Ниже приведен мой код:

        $stream = Storage::disk('incoming_feed_server')->getDriver()->readStream($fileName);

        while(ob_get_level() > 0) ob_end_flush();

        //save file onto local system
        Storage::disk('public')->put($newFileNAmeWithDate, $stream); 

        $handle = fopen(storage_path('app/public/'.$newFileNAmeWithDate), "r") or die("Couldn't get handle");

        $content = '';
        if ($handle) {
            while (!feof($handle)) {
                $content.= fgets($handle, 4096);                    
            }
            fclose($handle);
        }  

Пожалуйста, дайте мне знать правильное решение этой проблемы.Заранее спасибо!

...