如何调试 Symfony StreamedResponse?

Posted

技术标签:

【中文标题】如何调试 Symfony StreamedResponse?【英文标题】:How to debug a Symfony StreamedResponse? 【发布时间】:2019-04-15 10:29:09 【问题描述】:

我正在使用 StreamedResponse 来提供大型 CSV 文件。当我在 回调函数 中遇到错误时,浏览器只会显示“找不到文件”错误,并且我无法访问 Symfony 调试工具栏。有没有办法访问回调中抛出的异常? 我的操作如下所示:

  public function exportAction(Request $request) 

     $response = new StreamedResponse();
     $response->setCallback(function() 

        // Here i'm fetching my data with Doctrine and outputting it with 
        // $handle = fopen('php://output', 'w'); ...fputcsv() ...fclose();

     );

     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');

     return $response;
  

编辑 大多数时候,在浏览器开发工具中查看请求时,响应内容是空白的。

【问题讨论】:

【参考方案1】:

嗯...我不知道有什么方便的方法,但是您可以加载主页,打开分析器,然后单击“最后 10 个”按钮查看过去的配置文件。

【讨论】:

谢谢,可能有更方便的方法,但成功了。 有时,在浏览器开发工具控制台中查看时,我什至没有获得失败请求的状态,并且它没有出现在“最后 10 个”按钮中。知道为什么吗?只收到“找不到文件”消息。【参考方案2】:

注意

网络调试工具栏不适用于类型响应 StreamedResponse.

来源:https://symfony.com/doc/current/reference/configuration/web_profiler.html

【讨论】:

以上是关于如何调试 Symfony StreamedResponse?的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 4,登录,如何调试错误“无效凭据”?

如何使用 Symfony Routing 作为独立组件来调试路由?

如何在Symfony 2/3中调试环境中的所有参数?

Symfony 5 调试工具栏未显示在错误页面上

Symfony,当从内置服务器提供分页时不显示调试栏

为啥 Symfony 调试工具栏中的计时器(分析器)超过 100% 时间?