【发布时间】:2021-11-15 13:22:28
【问题描述】:
我将 Lumen 用于一组 API。
使用 symphony 库中内置的 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 fedora 7
- apache 2.4.41
- mysql8
但我有其他服务器,其中此流仅列出第一批。其他服务器规格如下:
- php 7.4
- centos 8
- apache 2.4.47
- mysql8
我想要在所有服务器上运行此流的指导。我已经比较了 php.ini 和我能想到的所有其他内容。 提前致谢。
【问题讨论】:
标签: response lumen data-stream symfony-http-foundation