Здравствуйте. У меня возникла вот такая вот проблема: Мне нужно закачать файл размером 50 Mb это текстовый файл. Когда я его качаю через FleshGet максимальную скорость которую он мне выдает 5 Kb на секунду это еще в лутшем случае. Но когда я его пытаюсь закачать через curl он мне показует, ну в браузере что закачка началась строка состояния в IE идет но минут 10 и строка состояни которая показует, что грузится файл исчезает и написано, что готово но хотя сам файл не закачал и мой скрипт не доработал до конда. В самом начале скрипта я вывожу строку в браузер чере echo типа Download starting... а в конце скрипта, то есть когда он должен завершаться у меня должа выводится строчка End download Когда скрипт начинает работать строка Download starting... выводится вроди грузится показует браузер, но через минут 10 браузер перестает грузиться, а строка End download не выводится. Я не пойму, что это такое.......... Почему мой скрипт перестает работать? Ошибку он ни какую не показывает. Сегодня 5 часов сидел жда, чтобы загрузить файл на 20 Mb но так ничего и не произошло
могу ошибаться, но: загружать надо немного не так. выводя строчку в броузер ты весь остальной поток направляешь туда же ...а так у тебя просто переполняется буфер эксплорера. а закачать к себе или на сервер?
Очень желательно выводить в браузер инфу не реже раза в минуту. С эксплорером такая фигня наблюдается, что хоть у него keep-alive стоит 300, но примерно через минуту он может спокойно соединение закрыть. Надеюсь ты читаеш тот файл не целиком (через file() например)?
Вот код: Код (Text): GetData(имя_файла_откуда_скачиваем); function GetData($url) { echo "Download starting...<br>"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_VERBOSE, 0); curl_setopt($ch, CURLOPT_INFILESIZE, 52428800); $data = curl_exec($ch); echo curl_error ($ch); curl_close($ch); echo "End download<br><br>Create file ".имя_файла_куда_сохраняем."<br>Copying..."; $newFile = fopen(имя_файла_куда_сохраняем, "wb"); fwrite($newFile, $data); fclose($newFile); echo "<br>End copying"; }
Памойму тут тока сокеты подойдут. Либо запуск скрипта из консоли. Тока еще в курле таймаут выставь побольше
CURL заработал теперь в переменную $data записывается содержание файла. Но вот следующая проблема: На том хосте куда я выложил свой сайт не работает fopen, как мне теперь записать содержимое $data в файл????????? Какие есть альтернативы fopen?
pr0n1x, fopen не работает? Тогда хостинг менять. А ты случаем не в удаленный файл пишешь (через fopen( "http://... ) )?