За последние 24 часа нас посетили 20009 программистов и 1638 роботов. Сейчас ищут 2052 программиста ...

Тайминг для парсера.

Тема в разделе "PHP для новичков", создана пользователем idoruev, 31 янв 2016.

  1. idoruev

    idoruev Новичок

    С нами с:
    22 май 2014
    Сообщения:
    13
    Симпатии:
    0
    Добрый вечер, господа! Помогите пожалуйста с задачей.
    Есть парсер валют с сайта НБ РБ. Парсер берёт данные и сохраняет их в xml-файл и делает он это при каждом запросе.
    Как сделать так, чтобы данные сохранялись в файл 1 раз в сутки?
    Код (PHP):
    1. $today = date("m/d/Y");
    2. $fp = fopen('course.xml', 'w');
    3. $ch = curl_init();
    4. curl_setopt($ch, CURLOPT_URL,
    5.       'http://www.nbrb.by/Services/XmlExRates.aspx?ondate='.$today);
    6. curl_setopt($ch, CURLOPT_FILE, $fp);
    7. curl_exec($ch);
    8. fclose($fp);
    9. curl_close ($ch); 
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  2. maxmuha

    maxmuha Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    107
    Симпатии:
    0
    Адрес:
    Мурманск
    запускать данный скрипт 1 раз в сутки при

    Добавлено спустя 44 секунды:
    запускать данный скрипт 1 раз в сутки при помощи крона.
     
  3. idoruev

    idoruev Новичок

    С нами с:
    22 май 2014
    Сообщения:
    13
    Симпатии:
    0
    А можно сверять дату обновления файла с текущей датой, если разница превышает 20 часов запускать скрипт?
     
  4. maxmuha

    maxmuha Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    107
    Симпатии:
    0
    Адрес:
    Мурманск
    так то можно, конечно.
    крон вам не подходит?
     
  5. idoruev

    idoruev Новичок

    С нами с:
    22 май 2014
    Сообщения:
    13
    Симпатии:
    0
    Возможно и подходит, но в моих глазах его использование (т.е. для человека нулевого уровня) сложно устроено. Я вроде бы и представляю себе как он работает, но в данном случае мне кажется лучше обойтись другим способом. Как вы считаете?
     
  6. maxmuha

    maxmuha Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    107
    Симпатии:
    0
    Адрес:
    Мурманск
    я считаю использование крон - это лучшее решение поставленой задачи )

    Добавлено спустя 1 минуту 33 секунды:
    с его помошью можно хоть каждую минуту данный скрипт запускать.
     
  7. idoruev

    idoruev Новичок

    С нами с:
    22 май 2014
    Сообщения:
    13
    Симпатии:
    0
    Могли бы вы помочь мне с кодом?
     
  8. maxmuha

    maxmuha Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    107
    Симпатии:
    0
    Адрес:
    Мурманск
    Код (PHP):
    1. # Выполнять задание в 18 часов 7 минут 13 мая если это пятница
    2. 7 18 13 5 5 /home/www/myscript.pl
    3. # Выполнять задание раз в час в 0 минут
    4. 0 */1 * * * /home/www/myscript.pl
    5. # Выполнять задание каждые семь часов в 0 минут
    6. 0 */7 * * * /home/www/myscript.pl
    7. # Выполнять задание по воскресеньям в 10 час 30 минут
    8. 30 10 * * 0 /home/www/myscript.pl
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  9. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Нет, не лучше. Крон - простейшая штуковина, абсолютно. Точнее, для запуска одного-единственного скрипта без дополнительных параметров - самое простейшее дело. У адекватных хостеров обычно даже есть GUI для работы с кроном.

    А в вашем предложении: сверять дату обновления файла с текущей датой, - как вы собираетесь сверять? Другим скриптом? Который тоже надо будет как-то запускать?
     
  10. idoruev

    idoruev Новичок

    С нами с:
    22 май 2014
    Сообщения:
    13
    Симпатии:
    0
    В данный момент скрипт с парсером запускается каждый раз, когда пользователь запрашивает страницу. Вот я и подумал делать проверку в этом же скрипте на давность сохранённого xml-файла. Т.е. запрос пользователя - если файлу .xml меньше суток, то ничего не делать, если больше, то спарсить его заново.
     
  11. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Ну, как вариант. Как костыль. :)
    Но тут
    1. Лишняя, совершенно ненужная нагрузка (пусть небольшая, но некошерно же)
    2. Это ж надо написать ещё один скрипт проверки :)
    3. Загрузка страницы у пользователя будет осуществляться дольше за счёт выполнения ещё одного условия

    Или:
    Код (PHP):
    1. 0    *    *    *    *    php /путь/до/скрипта.php
    в крон
     
  12. idoruev

    idoruev Новичок

    С нами с:
    22 май 2014
    Сообщения:
    13
    Симпатии:
    0
    Спасибо всем за помощь.