<?php
//Работает только при socket соединении
//необходимо выставить в true. Иначе после вывода данных выполнение скрипта прервется
ignore_user_abort(true);
sleep(8);
echo 'message';
flush();//только теперь php знает, оборвалось соединение или нет
$status = connection_status();
if ($aborted = connection_aborted()) {
file_put_contents(__DIR__ . '/a', date('d.m.Y H:i:s') . ' - aborted (' . $aborted . '); Status - ' . $status);
echo 'aborted';
} else {
file_put_contents(__DIR__ . '/a', date('d.m.Y H:i:s') . ' - connected (' . $aborted . '); Status - ' . $status);
echo 'connected';
}
Возвращение методом либо Response либо, что то иное это тоже кривой подход. Почему бы не подписаться на событие kernel.request, которое происходит до выполнения экшена в контроллере. И проверять входные данные, в случае если они не устраивают возвращать Response и тогда контроллер не будет вызываться.