Загрузка файлов по его URL на PHP.

igor456
На сайте с 10.10.2005
Offline
104
11616

Добрый день.

Имеется ссылка на картинку в интернете, необходимо средствами PHP закачать ее на свой сервер. Как правильно это сделать ? Пробовал ф-цией copy, но при копировании больших файлов возникает ошибка истечения времени загрузки страницы. Тоесть копирование происходит очень медленно.

Спасибо.

Artlight
На сайте с 15.09.2003
Offline
123
#1
igor456:
при копировании больших файлов возникает ошибка истечения времени загрузки страницы

Какой приблизительно объем картинки?

Обменяю свой вмр на ваш яд курс 1-1
igor456
На сайте с 10.10.2005
Offline
104
#2
Artlight:
Какой приблизительно объем картинки?

Уже при загрузке картинки в 70Кб возникает Timeout

MASe
На сайте с 17.09.2002
Offline
219
#3
igor456:
Уже при загрузке картинки в 70Кб возникает Timeout

а на сервере таймаут если изменить????

Only God Can Judge Me... Nobody Else... Дрезна (http://www.drezna.ru/) Помощники: Sape (http://www.sape.ru/r.167724536c.php)
N
На сайте с 26.02.2007
Offline
75
#4

все же еще от сервера с которого пытаетесь скачать, может в нем проблема...

2USB.ru (http://2usb.ru/) - про usb-гаджеты. shop.2usb.ru (http://shop.2usb.ru/) - магазин гаджетов и флешек. ВСЕ о заработке в интернете (http://goldroyal.net/)
igor456
На сайте с 10.10.2005
Offline
104
#5
MASe:
а на сервере таймаут если изменить????

таймаут стоит 120 секунд, по идее этого должно хватить чтобы скачать 70кб.

newsgood:
все же еще от сервера с которого пытаетесь скачать, может в нем проблема...

Я пробовал скачивать с разных серверов, результат один и тот же.

Все дело скорее всего именно в ф-ции copy. Может есть какой-то другой способ ?

igor456
На сайте с 10.10.2005
Offline
104
#6

Кстати, если запускаю скрипт с этой ф-цией на локалке, то картинка копируется на локалку меньше чем за секунду.

DC
На сайте с 08.09.2007
Offline
17
#7

Можно ещё воспользоваться функциями библиотеки gd.

вот на скорую руку сделал пример


<?
$file = "http://fadeeva.com/beasts/fadeeva-mice8.jpg"; //здесь адрес к картинке
$fl = getimagesize($file);
$type = $fl['mime'];
$name = basename($file);
$newpath = ""; // здесь адрес куда ложить картинку (должны быть права на запись в эту папку)

switch($type)
{
case "image/gif":
$img = imagecreatefromgif($file);
imagegif($img, $newpath.$name);
break;
case "image/jpeg":
$img = imagecreatefromjpeg($file);
imagejpeg($img, $newpath.$name);
break;
case "image/png":
$img = imagecreatefrompng($file);
imagepng($img, $newpath.$name);
break;
}
?>

не могу сказать что пример быстрый... потому думаю было бы полезным в начале кода установить set_time_limit(0);

Чудеса случаются... это вам любой программист скажет... Скрипты (php, mysql, javascript и т.д.) любой сложности и вёрстка на заказ т.: +38(099)0569716, icq: 296874736
d1ma
На сайте с 18.03.2007
Offline
102
#8

Можно закачивать cURL-ом. А если safemode отключен и доступен wget можно его запускать через system с параметром -b (background), на него таймаут не будет влиять.

I
На сайте с 06.09.2007
Offline
11
imi
#9

file_get_contents, затем запись на диск

K
На сайте с 12.07.2006
Offline
295
Kpd
#10

file(), потом запись на диск

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий