За последние 24 часа нас посетили 23020 программистов и 1724 робота. Сейчас ищут 2055 программистов ...

Проблема с закачкой очень больших файлов

Тема в разделе "Прочие вопросы по PHP", создана пользователем pr0n1x, 17 июн 2006.

  1. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Здравствуйте.
    У меня возникла вот такая вот проблема:
    Мне нужно закачать файл размером 50 Mb это текстовый файл.
    Когда я его качаю через FleshGet максимальную скорость которую он мне выдает 5 Kb на секунду это еще в лутшем случае.

    Но когда я его пытаюсь закачать через curl он мне показует, ну в браузере что закачка началась строка состояния в IE идет но минут 10 и строка состояни которая показует, что грузится файл исчезает и написано, что готово но хотя сам файл не закачал и мой скрипт не доработал до конда.

    В самом начале скрипта я вывожу строку в браузер чере echo типа Download starting... а в конце скрипта, то есть когда он должен завершаться у меня должа выводится строчка End download

    Когда скрипт начинает работать строка Download starting... выводится
    вроди грузится показует браузер, но через минут 10 браузер перестает грузиться, а строка End download не выводится.

    Я не пойму, что это такое.......... Почему мой скрипт перестает работать? Ошибку он ни какую не показывает.

    Сегодня 5 часов сидел жда, чтобы загрузить файл на 20 Mb но так ничего и не произошло
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    могу ошибаться, но:
    загружать надо немного не так. выводя строчку в броузер ты весь остальной поток направляешь туда же ...а так у тебя просто переполняется буфер эксплорера.

    а закачать к себе или на сервер?
     
  3. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Очень желательно выводить в браузер инфу не реже раза в минуту. С эксплорером такая фигня наблюдается, что хоть у него keep-alive стоит 300, но примерно через минуту он может спокойно соединение закрыть. Надеюсь ты читаеш тот файл не целиком (через file() например)?
     
  4. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Вот код:
    Код (Text):
    1.  
    2. GetData(имя_файла_откуда_скачиваем);
    3.  
    4. function GetData($url)
    5. {
    6.     echo "Download starting...<br>";
    7.    
    8.     $ch = curl_init($url);
    9.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    10.     curl_setopt($ch, CURLOPT_VERBOSE, 0);
    11.     curl_setopt($ch, CURLOPT_INFILESIZE, 52428800);
    12.     $data = curl_exec($ch);
    13.     echo curl_error ($ch);
    14.     curl_close($ch);
    15.    
    16.     echo "End download<br><br>Create file ".имя_файла_куда_сохраняем."<br>Copying...";
    17.    
    18.     $newFile = fopen(имя_файла_куда_сохраняем, "wb");
    19.     fwrite($newFile, $data);
    20.     fclose($newFile);
    21.        
    22.     echo "<br>End copying";
    23. }
     
  5. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Памойму тут тока сокеты подойдут. Либо запуск скрипта из консоли. Тока еще в курле таймаут выставь побольше
     
  6. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    CURL заработал теперь в переменную $data записывается содержание файла.
    Но вот следующая проблема:
    На том хосте куда я выложил свой сайт не работает fopen, как мне теперь записать содержимое $data в файл????????? Какие есть альтернативы fopen?
     
  7. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    pr0n1x,
    fopen не работает? Тогда хостинг менять.
    А ты случаем не в удаленный файл пишешь (через fopen( "http://... ) )?
     
  8. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    да, да именно так и пишу........спасибо я понял ошибку