Как обнаружить прерванное соединение с PHP PUT
Я написал функцию загрузки PHP, которая использует HTTP PUT, используя вызовы XHR2 из браузера. Все отлично работает, но теперь мне также нужно определить, отменил ли пользователь загрузку, закрыл браузер или просто пропало сетевое соединение.
И мне очень и очень трудно добиться этого, вплоть до того момента, когда я начинаю думать, что это просто невозможно, поэтому любые идеи будут высоко оценены!
Ядро моего загружаемого кода на самом деле ничего особенного и выглядит примерно так:
$putdata = fopen("php://input", "r");
$fp = fopen($tempPath, "a");
while ($data = fread($putdata, 1024)) { fwrite($fp, $data); }
fclose($fp);
fclose($putdata);
Первая мысль была просто использовать register_shutdown_function
, но эта функция вызывается только через пять минут, что слишком поздно. Также connection_aborted
не работает. Я действительно не могу вывести что-либо клиенту во время чтения данных, даже заголовок или мой ответ после того, как это терпит неудачу с ошибкой "заголовки уже отправлены". Теперь мне кажется, что сценарий просто ожидает в цикле while данных, которые больше не поступают, переворачивая большие пальцы.
Кажется, я сейчас застрял. Есть идеи?
1 ответ
Вы должны проверить ignore_user_abort с помощью connection_aborted или connection_status.