0

我将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 和我能想到的所有其他内容。提前致谢。

4

1 回答 1

0

除了流式响应工作的服务器之外,所有服务器都缺少PHP ZTS 。在服务器上添加php zts最终为我解决了这个问题。

于 2022-01-04T18:48:59.347 回答