我将Lumen用于一组 API。
使用交响乐库中内置的streamedresponse。
use Symfony\Component\HttpFoundation\StreamedResponse;
protected function getFileResponseHeaders($filename)
{
return [
'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0',
'Content-type' => 'text/csv; =utf-8',
'charset' => 'utf-8',
'Content-Disposition' => 'attachment; filename='.$filename,
'Expires' => '0',
'Pragma' => 'public'
];
}
//'Content-Type: '
protected function streamFile($callback, $headers)
{
$response = new StreamedResponse($callback, 200, $headers);
$response->send();
}
我在一个场景中使用这种方法,我想在命令行中以 2000 块的数据流式传输数据。我有多达 700 万行的大量数据要流式传输。
整个事情在具有以下规格的服务器上运行良好。
- php 7.3.27
- centos 软呢帽 7
- 阿帕奇 2.4.41
- mysql8
但我有其他服务器,该流仅列出第一批。其他服务器的规格相同如下:
- php 7.4
- centos 8
- 阿帕奇 2.4.47
- mysql8
我想要在所有服务器上运行此流的指导。我已经比较了 php.ini 和我能想到的所有其他内容。提前致谢。