下面是我的控制器。爲什麼我訪問/test
後,即使關閉瀏覽器,控制器仍然繼續運行?這是正常的行爲嗎?我沒有使用像ignore_user_abort
這樣的配置?爲什麼在用戶關閉瀏覽器後symfony控制器會繼續執行?
爲什麼該控制器持續輸出日誌即使我閉上我的瀏覽器?
/**
* @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;
}
即使您關閉了瀏覽器(客戶端)服務器繼續執行請求,它也是服務器端代碼 – CodeIsLife
PHP將不會檢測到用戶已中止連接,直到嘗試被做成向客戶發送信息。簡單地使用echo語句並不能保證發送信息,參見flush()。 – CodeIsLife