以下は私のコントローラです。私が/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