Заработало только при socket соединении.
Так же PHP узнает об обрыве соединения, только после отправки данных клиенту (через echo, header) и сбрасывании буфера.
Код будет следующим
<?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';
}
Ссылки по теме
stackoverflow.com/a/25251852
php.net/manual/ru/function.ignore-user-abort.php (смотреть примечание)