Laravel本地磁盘append()占用大量内存

时间:2019-02-12 21:55:09

标签: php laravel file memory

Storage::disk('local')
         ->append('/newsletter_lists/'.$contact_file_name.'.csv',
                $contact->email.','.$contact->salutation.','.$contact->lastname.','.$contact->unsubscribelink.','.$contact->bonus
          );

这是Laravel中的代码,该代码正在foreach循环(从数据库中批量加载)中写入csv文件。 但是据我所知,append()方法每次都会打开文件,将内容加载到内存中,添加新行并再次保存文件,这需要大量记录(65 000),需要很长时间时间。 我正在尝试找到一种方法来附加到文件的末尾,而不在可能的情况下将内容加载到内存中,或者我在这里采用了错误的方法?

1 个答案:

答案 0 :(得分:0)

我接受了@ d3L的建议,并使用普通的php将其追加到文件中,而不使用laravel的append()方法,该方法每次需要添加一行时都会加载内容。

$file = fopen(Storage::disk('local')->path('test.csv'), "a+b");