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

Можно попробовать асинхронную загрузку с помощью ftp_nb_get() и ftp_nb_fget()

См. в документации примеры #1 и #2 с дозакачкой
Для просмотра ссылки Войди или Зарегистрируйся

Но лучше качать на локальную машину удобным менеджером загрузок, по расписанию если нужно.
А с локалки через ssh на сервер - php-скриптом или файлзиллой
 
Это понятно, но задача стоит именно через пыху.
 
Это понятно, но задача стоит именно через пыху.

curl тоже умеет частями качать, пример

Код:
function isAcceptRangeSupported($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $content = curl_exec($ch);
    curl_close($ch);

    $content = trim(strtolower($content));
    $headers = explode("\n", $content);

    foreach ($headers as $val) {
        $val = trim($val);
        return ((substr($val, 0, 13) == "accept-ranges") && (strpos($val, "bytes")!==false) );
    }
    return false;
}

function Read($url, $position, $size) {

    $hdr = array("Range: bytes=".$position."-".($position + $size));

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $hdr);
    $content = curl_exec($ch);
    curl_close($ch);

    return $content;

}

$file="http://htmlweb.ru/download/test.rar";
if (isAcceptRangeSupported($file)) {
    echo "Докачка поддерживается сервером<br>\n";
    // читаем из файла с адреса 1Кб блок размером 512байт
    echo Read("$file, 1024, 512);
} else
    echo "Докачка НЕ поддерживается сервером<br>\n";
 
Вот что нужно :
Screenshot_7.png
Screenshot_8.png

243 мб, качает

идея понравилась
можно пример кода с массивом ссылок, который проверяет по ссылке,если файл существует ,то пропускает, если нет,то качает на сервер
cron задача не решается, макс. 180 мб(все же больше;)), нужен пример по скринам, ребята, помогите

curl тоже умеет частями качать, пример

Код:
function isAcceptRangeSupported($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $content = curl_exec($ch);
    curl_close($ch);

    $content = trim(strtolower($content));
    $headers = explode("\n", $content);

    foreach ($headers as $val) {
        $val = trim($val);
        return ((substr($val, 0, 13) == "accept-ranges") && (strpos($val, "bytes")!==false) );
    }
    return false;
}

function Read($url, $position, $size) {

    $hdr = array("Range: bytes=".$position."-".($position + $size));

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $hdr);
    $content = curl_exec($ch);
    curl_close($ch);

    return $content;

}

$file="http://htmlweb.ru/download/test.rar";
if (isAcceptRangeSupported($file)) {
    echo "Докачка поддерживается сервером<br>\n";
    // читаем из файла с адреса 1Кб блок размером 512байт
    echo Read("$file, 1024, 512);
} else
    echo "Докачка НЕ поддерживается сервером<br>\n";
HTTP ERROR 500

echo Read("$file, 1024, 512);
а нужно echo Read("$file, 1024, 512"); походу :ah:
и пишет "Докачка НЕ поддерживается сервером"
 
Последнее редактирование модератором:
Ну так наверное на pcloud и сервер отдельный, а не shared
 
Я как-то уже писал установщик с докачкой через сокеты.
Если нет таймаута по исполнению скрипта, он может закачивать на сервер большие файлы (300Мб проверял, работает).

Тема была здесь

Состоит из двух частей — одна архивирует и сохраняет, другая закачивает и распаковывает на своем сервере.
 
Назад
Сверху