Фоновое выполнение скрипта и процент выполнения на примере функции copy();
Здравствуй, %user_name%!
И так ближе к вопросу.
Всем известно, что с функцией copy(); скрипт будет выполняться до тех пор, пока не загрузит файл с сервера (в моем случае меня интересует только интернеты, а не localhost).
Итак, мне нужно сделать так, чтобы copy(); выполнялась фоново и я смог бы получить процент загрузки.
И да, надо сделать это с учетом того, что большая часть трафика - мобильники.
Ну я вижу тут 2 возможных варианта.
Реализовать свою собственную функцию копирования, открывать файл, читать часть и записывать в новый файл, попутно обновляя процент завершения операции в базе данных. Другой скрипт будет просто читать сколько процентов из базы и выводить.
Но я бы так не делал, это очень плохо скажется на производительности.
Второй вариант это выводить процент на основе примерного подсчета, в зависимости от размера файла и загруженности диска.
В принципе ничего сложного. Только..как сделать это всё фоново? Чтобы пользователь в любой момент мог зайти на страницу и узнать, как там его файл импортируется.
Ну с этим особых проблем нет.
Получаем заголовки по ссылке, узнаём размер. Записываем его в сессию.
Так же в сессию записываем путь к файлу. Запускаем скачивание.
При открытии страницы, проверяем размер скачанного файла, и сверяем с размером в сессии. Отсюда и получаем процент готовности.