readfile — PHP-скрипт прерывается, когда клиент отключается?

Я разработал платформу контента для веб-приложений, которая позволяет пользователям искать и загружать (большие) видеофайлы. Они также могут смотреть файл прямо в браузере. Для управления доступом я не буду указывать их напрямую на файлы mp4 / webm, а вместо этого использую скрипт PHP для обработки этого. Мой код в основном основан на примере, найденном на http://www.media-division.com/php-download-script-with-resume-option/

Snippet:

    set_time_limit(0);
fseek($file, $seek_start);

while(!feof($file))
{
print(@fread($file, 1024*8));
ob_flush();
flush();
if (connection_status()!=0)
{
@fclose($file);
exit;
}
}

Он в основном устанавливает время выполнения неограниченное (большие файлы), последовательно читает файл и передает его клиенту. Мой вопрос: сценарий прерывается, когда клиент прерывает загрузку? Например, когда есть потоковое видео с использованием видеоплеера HTML5 и прекращается просмотр.

ignore_user_abort отключен по умолчанию, и я не включил это в моей конфигурации. Но функция line connection_status () проверяет, живо ли соединение, и прерывает сценарий, если это не так (я полагаю).

3

Решение

От документация:

PHP не обнаружит, что пользователь прервал соединение, пока
сделана попытка отправить информацию клиенту. Просто используя
Заявление echo не гарантирует отправку информации, см.
промывать().

Так что я бы сказал, как только пользователь прервал, и вы называете это двумя строками:

ob_flush();
flush();

Сценарий будет остановлен. Я не думаю, что эта часть будет выполнена:

if (connection_status()!=0)
{
@fclose($file);
exit;
}

вы проверили? Есть ли причина, почему вы могли бы предположить, что это не так?

Вы можете просто написать файл журнала для подтверждения, если вы не можете видеть текущие процессы (Shared Hosting)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]