我必须从 SFTP 读取一个大约 500MB 的大型 json 文件。我正在使用 laravel 存储来读取文件。首先,我将文件下载到本地 storage/app/public 文件夹中,然后逐行从本地文件夹中读取文件,并将文件内容附加到变量中。之后,我解码 json 数据并将每条记录保存在数据库中。但是我有时会遇到内存耗尽错误,甚至是最大超时错误。我使用 php ini 函数将内存限制 1024M 和执行时间增加到 600,并尝试了许多解决方案,但没有一个有效。以下是我的代码:
$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);
}
请让我知道这个问题的正确解决方案。提前致谢!