Загрузка большого файла с помощью cURL в PHP - страница зависает - PullRequest
0 голосов
/ 27 ноября 2010

У меня есть PHP-скрипт, который загружает видео из разных мест. Видеофайлы могут быть в любом месте от 20 до 100 МБ +

У меня есть PHP, в настоящее время сохраняющий видеофайл в каталоге с помощью CURLOPT_FILE. Это работает нормально, без проблем.

Из-за загружаемых больших файлов я установил период ожидания cURL на 45 минут, чтобы файл мог загружаться. Я также установил set_time_limit (0), чтобы страница PHP продолжала обрабатываться после завершения загрузки. Я также установил ini_set ("memory_limit", "500M"); Когда загрузка завершится, она должна повторить «Downloaded» и затем обновить запись mysql о том, что файл был загружен.

Что происходит, если cURL правильно загружает видеофайл, но в браузере не отображается «Загружен», НО обновляет mysql.

Почему это? Я сам пытался найти решение, но не могу понять, в чем здесь проблема ...

1 Ответ

1 голос
/ 27 ноября 2010

Если вы находитесь в среде браузера, браузер через определенное время отключится, и поэтому перестанет прослушивать вывод из сценария, даже если сценарий продолжит работать.Это зависит от браузера, но число, которое я видел, составляет 30 секунд.

Чтобы преодолеть эту проблему, вы должны посылать вывод (даже если он бессмысленный echo "<!--empty comment-->";) время от времени.

У меня недавно была похожая проблема, и я решил ее, не выводя никакого содержимого из скрипта, а вместо этого периодически опрашивая из браузера, используя AJAX, чтобы узнать, было ли это сделано.

Или не используйте браузерную среду (поскольку она не идеально подходит для этой проблемы), а вместо этого используйте приглашение командной строки, так как он не имеет (насколько мне известно) этих таймаутов.

...