Скрипт копирования файлов на сервер

usergeyv

Знаток
Регистрация
5 Июл 2013
Сообщения
152
Реакции
25
Не уверен что в тот раздел, перенесите тему если че:ah:

Нужен скрипт купирования больших(~300-700mb) файлов по прямой ссылке на свой сервер.
Перебирал много вариантов , типа :
PHP:
<?php

$fileFrom = "http://bk-cdn.co/files/U.vseh.est.plan.2012.L1.HDRip.2100Mb.flv";
$filenameFrom = basename($fileFrom);
$uploadToDir = 'path'.$filenameFrom;//path путь на нашем сервере
if (!copy($fileFrom, $uploadToDir)) {
print ("failed to copy $fileFrom...\n");
}
?>
то времени не хватает,то что то еще...
Идеально , если кто встречал, ссылки (ссылку) на файл(ы) задал , а скрипт качает его по частям на сервер до тех пор пока не завершит закачку полного файла
 
Что типа такого:

PHP:
$star_time = microtime(true);
set_time_limit(100500); //чтоб пых не сдох

echo "Start download!<hr>";

$url = 'http://bk-cdn.co/files/U.vseh.est.plan.2012.L1.HDRip.2100Mb.flv';

$fileName = basename($url);
$fp = fopen('path/'.$fileName, "w");

$ch = curl_init($url); 
//curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 9.0)"); 

curl_setopt($ch,CURLOPT_FILE, $fp);

curl_setopt($ch,CURLOPT_TIMEOUT, 100500); // Время работы курла с данным адресом, при задачах качать большие файлы, стоит быть аккуратным с уменьшением этого параметра, чтобы закачка раньше времени не прервалась

$res=curl_exec($ch);
curl_close($ch);

fclose($fp);

printf ("\r\n loading in %f seconds! \r\n", microtime(true) - $star_time);


Для докачки есть вот тут код - Для просмотра ссылки Войди или Зарегистрируйся но он не полный нет обработки ошибок

Для работы со списком - функция Для просмотра ссылки Войди или Зарегистрируйся для открытия списка в массив и проход по массиву внутри которого мой код.
 
Что типа такого:

PHP:
$star_time = microtime(true);
set_time_limit(100500); //чтоб пых не сдох

echo "Start download!<hr>";

$url = 'http://bk-cdn.co/files/U.vseh.est.plan.2012.L1.HDRip.2100Mb.flv';

$fileName = basename($url);
$fp = fopen('path/'.$fileName, "w");

$ch = curl_init($url);
//curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 9.0)");

curl_setopt($ch,CURLOPT_FILE, $fp);

curl_setopt($ch,CURLOPT_TIMEOUT, 100500); // Время работы курла с данным адресом, при задачах качать большие файлы, стоит быть аккуратным с уменьшением этого параметра, чтобы закачка раньше времени не прервалась

$res=curl_exec($ch);
curl_close($ch);

fclose($fp);

printf ("\r\n loading in %f seconds! \r\n", microtime(true) - $star_time);

файл 371мб , успевает скачать 18мб ,потом
504 Gateway Time-out
 
Скачка удаленного файла при помощи CURL
PHP:
<?php
/**
* Скачка удаленного файла при помощи CURL
* автор: Nc_Soft
* 27.04.08
*/

//открываем сеанс
$curl = curl_init('http://example.com/file.zip');

//задаем параметры
curl_setopt($curl, CURLOPT_USERAGENT, 'Boroda/2.0 J2ME/MIDP');

//открываем файловый дескриптор (куда сохранять файл)
$fp =fopen('save.zip','w+b');

//сохраняем файл
curl_setopt($curl, CURLOPT_FILE, $fp);

//запускаем сеанс
curl_exec($curl);

//закрываем сеанс
curl_close($curl);

//закрываем дескриптор
fclose($fp);

?>
тож 18мб и потом
504 Gateway Time-out
 
файл 371мб , успевает скачать 18мб ,потом
504 Gateway Time-out

Запускай через консоль, если там тоже самое то хостинг с лимитами и set_time_limit не отработал.
Если через консоль ок, то придётся ломать голову над кучей проблем типа запуска в фоновом режиме и т.д.
Проще всего взять vps и запускать через консоль, или крон, или system() и его аналоги примерно такой же скрипт или wget. Тут нормальных либ не подскажу.
Из шаред хостингов примерно 20% нормально работают на загрузку больших файлов через php, остальные валятся с ошибкой. От цены и параметров хостинга, которые написаны в тарифах отталкиваться не получается. Выбираю чисто на практике.

Скачка удаленного файла при помощи CURL

тож 18мб и потом
504 Gateway Time-out

Он тоже самое и тем же методом делает ;)
Для обхода надо иметь возможность крутить конфиги php/nginx, а лучше фоново запускать консольно.
 
Запускай через консоль, если там тоже самое то хостинг с лимитами и set_time_limit не отработал.
Если через консоль ок, то придётся ломать голову над кучей проблем типа запуска в фоновом режиме и т.д.
Проще всего взять vps и запускать через консоль, или крон, или system() и его аналоги примерно такой же скрипт или wget. Тут нормальных либ не подскажу.
Из шаред хостингов примерно 20% нормально работают на загрузку больших файлов через php, остальные валятся с ошибкой. От цены и параметров хостинга, которые написаны в тарифах отталкиваться не получается. Выбираю чисто на практике.
hostinger.com.ua
Тариф
Премиум
 
hostinger.com.ua
Тариф
Премиум
там есть
Полный SSH доступ
Пробуй через него скрипт запустить.

Для просмотра ссылки Войди или Зарегистрируйся
тоже самое :(
Это вообще-то когда ты со своего сервера на другой сайт файл загрузить хочешь
 
а по ftp на php решит задачу ?
 
а по ftp на php решит задачу ?
неа, там какие-то лимиты срабатывают вот их надо убрать и задача будет решена.
На любом шареде к правке лимитов скорее всего доступа нет.
 
Назад
Сверху