Intereting Posts
PHP: mail () vs SendMail Сортировка многомерного массива по размеру его подматрицы Как создать постоянную ссылку с именем месяца вместо использования monthnum? Как сделать / внедрить мой собственный дизайн дисплея продукта в плагин wooCommerce Анонимные функции не работают: имя функции должно быть строкой Выбор между Imagemagick & GD для создания миниатюр Как получить XML-данные как ассоциативный массив с атрибутами в качестве ключа в PHP C & PHP: Сохранение настроек в целых числах с помощью побитовых операторов? Временно отключить OPCache Использование API YouTube v3 для просмотра всех личных видеороликов Создание простой библиотеки Codeigniter CSS не загружается на одном из моих маршрутов / представлений Не удается получить идентификатор строки с помощью pdo Как отключить ошибки кода состояния HTTP по умолчанию на сервере Zend? Каков наилучший метод для запланированных задач в PHP?

Обнаруживать, если загрузка завершена

У меня очень простой и стандартный скрипт загрузки PHP-скриптов.

Как проверить, завершилась ли загрузка, чтобы уведомить пользователя на стороне клиента? Мне даже не нужно показывать прогресс в реальном времени, меня интересует только конкретное событие: «когда загрузка завершена». Основываясь на моих исследованиях, кажется, что это нужно было бы определить с помощью сервера, поскольку нет события ondownloadready и я не думаю, что можно перехватить события браузера.

Поэтому мне кажется, что лучше всего было бы сравнить байты, отправленные в общие байты, с каким-то взаимодействием клиентов / севера. Как я могу проверить байты, отправленные с сервера, для принудительной загрузки PHP? есть ли какая-то глобальная переменная PHP, которая хранит эти данные, которые я могу выполнить с помощью AJAX?

  <?php header("Content-Type: video/x-msvideo"); header("Content-Disposition: attachment; filename=\"".basename($realpath)."\";"); ... $chunksize = 1 * (1024 * 1024); // how many bytes per chunk if ($size > $chunksize) { $handle = fopen($realpath, 'rb'); $buffer = ''; while (!feof($handle)) { $buffer = fread($handle, $chunksize); echo $buffer; ob_flush(); flush(); } fclose($handle); } else { readfile($realpath); } exit(); ?> 

Причина, по которой мне это нужно:

Для проекта, над которым я работаю, требуется, чтобы после начала загрузки страница перенаправляла (или отображает) страницу «Подождите, пока загрузка завершена». Затем, как только он будет завершен, он должен перенаправить (или отобразить) страницу «Ваша загрузка завершена, спасибо». Я открыт для других идей, которые достигнут того же результата.

    Ознакомьтесь с этой страницей сайта Sitepoint, которая описывает решение.

    В принципе, как только цикл while прерывается, все готово!

    Вот полный поток, который описывает использование опроса AJAX для обнаружения, когда загрузка завершена: http://www.sitepoint.com/forums/showthread.php?t=618233