質問: Storage::disk('s3'); $s3->put($s3Path, File::get($localPath)); File::delete($localPath); ``` 実際は、この処理を、zipファイルの数だけ回しています。 しかしコレだと、File::getを実行するたびに、メモリを消費していしまい、 結局memory_limitに達してしまい、処理が止まってしまいます。 なので、一回この処理を行うごとにメモリを開放したいです。 解決策 ---- 解決策として、色々調べましたが File::get()の部分を変数に入れunset()をしましたが これではメモリを開放できませんでした。 備考 --- できれば、コードは変えずにメモリ解放を正確に行いたいですが File:get()の中では`file_get_contents`が実行されており、これだとメモリを使ってしまうので`readfile()`をつかうといいみたいな記事もありました。 これだと上手く行きませんでした。
回答: スクリプト自体が終了するまでメモリを維持し続けるようです。 laravelコミュニティも調べてみましたが画期的なものは見つかりませんでした。 またメモリ解放用のメソッドなども用意されてないようですね。 一番近かった記事はこれでしょうか。 PHP running out of memory when uploading to s3 bucket - Laravel 5.2 ここに書いてある(the memory limit to astronomic values)ように天文学的数値にすれば 解決できるかもしれませんが問題解決には至らないでしょう。 もしかしたら、PHPでガベージコレクションを強制するgc_collect_cyclesを駆使すればできるかもしれませんね。