【问题标题】:SteamedResponse not working in lumen on other serverSteamedResponse 在其他服务器上的流明中不起作用
【发布时间】: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


    【解决方案1】:

    PHP ZTS 在所有服务器中都缺失,流式响应工作的服务器除外。 在服务器上添加php zts 终于解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2019-09-25
      • 2011-02-12
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2017-04-13
      • 1970-01-01
      • 2012-04-02
      相关资源
      最近更新 更多