Повторно сохранять файл изображения с одного сервера на другой каждые x минут

Я прошу, как настроить действие копирования на сервере PHP для копирования файла изображения с удаленного сервера с интервалом в x минут.

По сути, я хотел бы сделать:

$copy = copy('http://domain.com/image.jpg', '.images/destimg.jpg');

При том, что это делается каждые 5 минут! Можно ли это сделать, не используя слишком много памяти? Как насчет работы cron? Каковы ваши рекомендации?

Самое простое решение, которое я реализовал, выглядит так:

  1. создайте файл php со следующим кодом

    <?php
    /*
     * Copy images from remote server 
     */
    
    $file = 'http://www.example.com/images/image.jpg';
    $file1 = 'http://www.example.com/images/image1.jpg';
    $file2 = 'http://www.example.com/images/image2.jpg';
    
    $newfile = '/ABSOLUTE/PATH/WHERE/TO/PUT/FILE/images/image.jpg';
    $newfile1 = '/ABSOLUTE/PATH/WHERE/TO/PUT/FILE/images/image1.jpg';
    $newfile2 = '/ABSOLUTE/PATH/WHERE/TO/PUT/FILE/images/image2.jpg';
    
    if ( copy($file, $newfile) && copy($file1, $newfile1) && copy($file2, $newfile2)) {
        echo "Copy success!";
        //return;
    } else {
        echo "Copy failed.";
    }
    ?>
    
  2. Проверьте, получаете ли вы сообщение об успешном копировании.

  3. Закомментируйте или удалите эхо и раскомментируйте возврат, удалите еще часть кода.
  4. Создайте задание cron с помощью команды:

    php /АБСОЛЮТНЫЙ/ПУТЬ/К/ВАШЕМУ/PHP/ФАЙЛУ/ваш-файл.php

Вот так :-)


person ronimarin    schedule 23.01.2013    source источник


Ответы (1)


Если у вас есть доступ по ssh и вы можете настроить задание cron, то это довольно просто. Вы просто настроили задание cron, которое использует curl или wget для загрузки изображения и сохранения его в соответствующей папке. PHP не входит в это.

Используя curl, ваш crontab будет выглядеть примерно так:

*/5 * * * * curl http://domain.com/image.jpg > /......./images/destimg.jpg

Это настроено на запуск каждые 5 минут. Просто убедитесь, что вы установили абсолютный путь к месту назначения изображения.

Подробнее о заданиях cron: https://en.wikipedia.org/wiki/Cron.

person Kris    schedule 23.01.2013
comment
Пробовал несколько вариантов через модуль Webmin, чтобы добавить задание хрона. Использование команд: - person ; 23.01.2013
comment
Извините, нажал Enter... Вот мои попытки: 'cd /var/www/html/images/; curl -O example.com/image.jpg' и 'curl -o example.com/image.jpg /var/www/html/images/image.jpg' кажется, что обе команды все в порядке, но ничего не загружается и не сохраняется... - person ; 23.01.2013
comment
@ronimarin В моем примере была ошибка, теперь исправлена. После URL-адреса и перед пунктом назначения должен быть символ ›. - person Kris; 23.01.2013
comment
Все еще не повезло... (ссылка на источник изменена, изображение, которое мне нужно вытащить, есть, и я могу видеть его через браузер на исходном сервере). Вывод команды curl example.com/image.jpg › /var/www/html/images /image.jpg .. % Итого % Получено % Средняя скорость Xferd Время Время Время Текущая загрузка Загрузка Всего затрачено Левая скорость 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:-- :-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 - person ; 23.01.2013
comment
хрон? В самом деле? это невероятно сложно, нет причин использовать его, если вместо этого вы можете написать простой демон... - person o0'.; 23.01.2013