Проверяю следующим скриптом
<?php
ignore_user_abort(false);
echo 'message';
sleep(8);
while(ob_get_level()) {
ob_end_flush();
}
$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';
}
Всегда скрипт отрабатывается полностью и connection_aborted() === 0.
Пробовал в nginx играться с опцией fastcgi_ignore_client_abort.
При значении off в лог nginx попадает 499 ошибка, но скрипт все равно выполняется до конца и connection_aborted() === 0.
Как сделать, чтобы php знал отвалился клиент или нет?
Версия nginx 1.6.2
Версия php PHP/5.4.45
UPD: Проблема не в запросе, он быстрый.
Проблема в медленных клиентах с плохим интернет соединением.
Мне нужно знать, что они отказались ожидать ответа.