streamDownload下载大文件总是内存超限
jasonbigl opened this issue · 0 comments
jasonbigl commented
+---------------------------+---------+
| Component | Version |
+---------------------------+---------+
| PHP | 7.4.21 |
| Swoole | 4.8.12 |
| LaravelS | 3.7.31 |
| Laravel Framework [local] | 8.83.13 |
+---------------------------+---------+
重现代码如下。
这是为什么?laravel streamDownload是用来下载大文件的,怎么和laravels+swoole配合就回超过内存限制?找了大半天不知道原因在哪里
php配置的内存限制是128M,请问应该怎么解决呢?(除了修改内存限制)
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Log;
class IndexController extends Controller
{
public function export(Request $request){
return response()->streamDownload(function () {
$file = fopen('php://output', 'w+');
$i=1;
while ($i <= 1000000) {
$data = Str::random(mt_rand(100, 200));
fputcsv($file, [$data]);
$i++;
}
Log::info(memory_get_usage() / 1024 / 1024);
fclose($file);
}, 'file.csv');
}
}