Forum Webscript.Ru

Программирование => PHP => Тема начата: RelaX от 21 Марта 2002, 19:48:30

Название: закачка файла с другого сервера на свой сервер
Отправлено: RelaX от 21 Марта 2002, 19:48:30
мне надо сделать скрипт, который выполняет следующее:
я указываю URL нужного мне файла, а скрипт потом скачивает этот файл в указанную директорию сервера, на котором располается данных скрипт....

возможно ли такое?
Название: закачка файла с другого сервера на свой сервер
Отправлено: AlieN от 21 Марта 2002, 20:20:45
Да возможно:


$fp = fopen ("/home/rasmus/file.txt", "r");
$fp = fopen ("/home/rasmus/file.gif", "wb");
$fp = fopen ("http://www.php.net/", "r");
$fp = fopen ("ftp://user:password@example.com/", "w");
Название: закачка файла с другого сервера на свой сервер
Отправлено: Dm от 21 Марта 2002, 22:21:11
http://php.spb.ru/php/download_file.html
Название: закачка файла с другого сервера на свой сервер
Отправлено: RelaX от 22 Марта 2002, 15:45:08
Dm

это работает только на одном сервере, с другого сервера нияего не качает :(
Название: закачка файла с другого сервера на свой сервер
Отправлено: Lion от 22 Марта 2002, 16:01:14
Может хостинг бесплатный ? => исходящие соединения прикрыты...
Название: закачка файла с другого сервера на свой сервер
Отправлено: AlieN от 22 Марта 2002, 16:02:54
Lion
Логично :)
Название: закачка файла с другого сервера на свой сервер
Отправлено: RelaX от 22 Марта 2002, 17:05:45
Lion

нет, хостинг платный....
Название: закачка файла с другого сервера на свой сервер
Отправлено: Lion от 22 Марта 2002, 17:09:19
Цитировать
нет, хостинг платный....

Кто конкретно ?
Название: закачка файла с другого сервера на свой сервер
Отправлено: RelaX от 22 Марта 2002, 18:11:07
Lion

http://www.ur.ru (лучший хостинг в Уральском Регионе), траффик с этого сервера считается как городской (т.е. меньше всего надо будет платить за "выкачанный" файл :) )
Название: закачка файла с другого сервера на свой сервер
Отправлено: RelaX от 22 Марта 2002, 18:41:13
пишет такую ошибку:
Warning: Supplied argument is not a valid File-Handle resource in /usr/var/spool/web/aderus/site/www/2/1.php on line 10

сам скрипт выглядит так (на сервереве veer.net-burg.net все работает нормально):

     
   // открыли соединение
   $so = fsockopen("veer.net-burg.net", 80, &$errno, &$errstr, 30);
   // послали GET форму (простой URL + указание вирт. хоста)
   fputs($so,"GET /1/notepad.exe HTTP/1.0\\nHOST: veer.net-burg.net\\n\\n");

   // читаем все, пока не наступит "конец заголовка" (т.е. начало документа)
   // если наступит, то со след. байта начнется документ
   while(fgets($so,2048)!="\\r\\n" && !feof($so));
   
   unset($buf);
   // читаем документ в переменную
   while(!feof($so)) $buf.=fread($so,2048);
   // Готово. В переменной $buf храниться скаченный документ (т.е. файл)
   // Максимум можно читать порциями по 64K-1байт

   // закрываем сокет
   fclose($so);
   echo "Download fine, size ".strlen($buf)." bytes."; flush();

   // используем скаченный файл (в переменной) по назначению...
   $f=fopen("download.tmp","wb+");
   fwrite($f,$buf,strlen($buf));
   fclose($f);
   
?>
Название: закачка файла с другого сервера на свой сервер
Отправлено: Dm от 22 Марта 2002, 21:16:51
Цитировать
это работает только на одном сервере, с другого сервера ничего не качает

чем отличаются серверы?
Название: закачка файла с другого сервера на свой сервер
Отправлено: Dim от 11 Апреля 2005, 12:25:45
Здравствуйте!
Попробовал поюзать скрипт. Вроде бы как работает, а вродеб и нет.
Выдаёт сообщение об ошибке
Notice: Undefined variable: buf in z:\\home\\cjs.ru\\www\\upload.phtml on line 14
Download fine, size 5320099 bytes.

При этом в корне где лежит файл закачки, туда падает и файл download.tmp
Размер соответствует оригиналу, который закачивался.
Имя и расширение меняю на оригинальное (вручную) и файл удобоваримый, распаковывается нормально (оригинал - архив).

Далее не могу разобраться:
Почему скрипт выдаёт "Неопределенная переменная", если временный файл рисуется ?
line 14   -----  while(!feof($so)) $buf.=fread($so,2048);
Почему скрипт не создаёт файл с оригинальным именем?


скрипт запускаю через IE. Полностью листинг файла скрипта:

// открыли соединение
$so = fsockopen("pirk.ru", 80, &$errno, &$errstr, 30);
// послали GET форму (простой URL + указание вирт. хоста)
fputs($so,"GET /www1.rar HTTP/1.0\\nHOST: pirk.ru\\n\\n");

// читаем все, пока не наступит "конец заголовка" (т.е. начало документа)
// если наступит, то со след. байта начнется документ
while(fgets($so,2048)!="\\r\\n" && !feof($so));

unset($buf);
// читаем документ в переменную
while(!feof($so)) $buf.=fread($so,2048);
// Готово. В переменной $buf храниться скаченный документ (т.е. файл)
// Максимум можно читать порциями по 64K-1байт

// закрываем сокет
fclose($so);
echo "Download fine, size ".strlen($buf)." bytes."; flush();

// используем скаченный файл (в переменной) по назначению...
$f=fopen("download.tmp","wb+");
fwrite($f,$buf,strlen($buf));
fclose($f);

?>

Спасибо!
Название: закачка файла с другого сервера на свой сервер
Отправлено: Dim от 12 Апреля 2005, 12:23:52
Если я правильно понимаю, строка 14 выдаёт ошибку, потому как цикл начинается, а используется, прибавляется к переменной $buf , которая ранее не была инициализирована.
С этим разобрался. Добавил перед циклом строчку $buf = "";

С download.tmp вродеб тоже всё ясно.

Сейчас в другое упёрся.
1. Запускаю ест через IE. При запуске переодически выкидывает сообщение типа: "не удалось открыть узел http://cjs.ru/upload.phtml" , ну т.е. урл скрипта. Обычно при объёме файла более 5Мб. А мне надо полсотни Мб!. В чём причина не понятна?
Или другой вариант.
2. Браузер выдаёт превышен 30 секундный таймаут (не знаю где это рулить).
Подсобите, плз.
Спасибо.
Название: закачка файла с другого сервера на свой сервер
Отправлено: Lutik от 12 Апреля 2005, 12:29:43
1) А нече что есть предел для темп фаилов?
upload_max_filesize этот параметр проверь! phpinfo()
2) set_time_limit()
Название: закачка файла с другого сервера на свой сервер
Отправлено: Dim от 12 Апреля 2005, 12:40:16
Так, спасиб, начинаю догонять.
По 2) куда в скрипте это поставить. Или что то не то леплю :)
Название: закачка файла с другого сервера на свой сервер
Отправлено: Lutik от 12 Апреля 2005, 13:10:09
Вначало конечно!
Название: закачка файла с другого сервера на свой сервер
Отправлено: Dim от 13 Апреля 2005, 03:52:16
Спасиб!!!
Такс, сделал в начале скрипа
set_time_limit(0)
Работает машинка:)

Но файлы тяжелее 25М не тянет! :(
Посмотрел, стоит лимит
upload_max_filesize   20М

Отписал в суппорт хостинга, чтоб разжали. Молчат как рыба об лёд. Ну раз молчат больше 12 часов, значит незя. Можно конечно хостера поменять и найти у кого лимит этот не задавлен, но переезчать ИМНО геморно :(

Может можно эту хрень (с лимитом размера файла) как то объехать?
Название: закачка файла с другого сервера на свой сервер
Отправлено: Mog. от 13 Апреля 2005, 08:06:03
По частям файл качать
Название: закачка файла с другого сервера на свой сервер
Отправлено: Dim от 13 Апреля 2005, 10:15:23
Цитировать
Mog.:
По частям файл качать

Хорошая мысль. У меня она тоже возникала. Только как это сделать, покрошить исходный файл, который метров 120-150. На исходный сервак (где файл(ы) лежит) у меня доступа нет и соответственно там делить на части ничего не могу. Как быть?

ээ, а может я не правильно думаю, не стого конца?
Название: закачка файла с другого сервера на свой сервер
Отправлено: Mog. от 13 Апреля 2005, 12:05:15
Цитировать
Dim:
покрошить исходный файл

Отнюдь!
Проги, которые файлы качают с Инета не крошат ничего на серваках с которых скачивают и тем не менее умудряются файл по частям скачивать. Опять же докачка файла после перерыва вполне возможное дело. Если сервер позволяет.
Этот вопрос обсуждали и помнится не очень давно, поройся  поиском по форуму.