【发布时间】:2017-10-10 19:21:50
【问题描述】:
下面是我的控制器。为什么在访问/test 后关闭浏览器,控制器仍然运行?这是正常行为吗?我没有使用ignore_user_abort之类的任何配置?
为什么这个控制器在我关闭浏览器后仍然输出日志?
/**
* @Route("/test")
*/
public function testAction() {
$logger = $this->get('exception.logger');
for ($i = 0; $i < 100; $i++) {
$logger->info("[{$i}] ------------------------------- ");
sleep(1);
}
$response = new StreamedResponse(function() use($logger) {
for ($i = 0; $i < 100; $i++) {
$logger->info("[{$i}] ******************************************* ");
sleep(1);
}
});
$filename = "test.csv";
$response->headers->set('Content-Type', 'application/force-download');
$response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"');
return $response;
}
【问题讨论】:
-
这是一个服务器端代码,即使你关闭浏览器(客户端)服务器继续执行请求
-
PHP 不会检测到用户已中止连接,直到尝试向客户端发送信息。简单地使用 echo 语句并不能保证发送信息,请参阅 flush()。
标签: symfony