Мега парсинг

Тема в разделе "Как сделать...", создана пользователем SimonSmith, 27 дек 2011.

  1. SimonSmith

    SimonSmith Постоялец

    Регистр.:
    25 сен 2008
    Сообщения:
    148
    Симпатии:
    33
    Здравствуйте,
    стоит задача сделать http://news.yam.md/ru/ такую систему. Т.е. парсить новости из рсс с определенных ресурсов и выводить к себе на сайт. Не могу никак придумать логику создания данного скрипта :(

    По началу делал парсинг на прямую с ~5 ресурсов...все вроде нормально, загрузка не большая... но когда добавил еще 5 то все...страница грузиться сек. 10... Решил завозить все в базу потом оттуда в кэш и на сайт. Дальше что делать н3, остановился и все идеи закончили... Помогите, подскажите что можно сделать дальше?
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Парсишь поочередно с различных ресурсов с периодичностью, скажем раз в 4 часа, и заливаешь спарсеное в базу ну или в файлм(это как, кому удобно). Это один скрипт.
    Вторым просто выводишь данные из базы на страницу...
     
  3. SimonSmith

    SimonSmith Постоялец

    Регистр.:
    25 сен 2008
    Сообщения:
    148
    Симпатии:
    33
    первый вариант не подходит т.к. к примеру 15тый ресурс спарсеный через 4 часа станет уже не актуален (в среднем +-30мин от главного ресурса что бы не был отрыв поста новости)
    второй тоже не подходит т.к. если парсить и в базу и из базы то особого эффекта не будет что парсить напрямую или из рсс в базу...
     
  4. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Это не два варианта! Это два скрипта, которые должны работать одновременно! У тебя на сайте может быть несколько сотен пользователей за час, так что теперь для каждого отдельно парсить новости? Так никакой сервак не выдержит... Поэтому один скрипт парсит новости раз в пол часа (час, 10 минут...по боку с какой периодичностью, это задаешь ты исходя из актуальности новостей) и льет их в базу, а второй выводит их из базы для каждого конкретного пользователя и сколько угодно раз...
     
    SimonSmith нравится это.
  5. SimonSmith

    SimonSmith Постоялец

    Регистр.:
    25 сен 2008
    Сообщения:
    148
    Симпатии:
    33
    да тут без крона не обойтись :-/ а я думал может как-то его обойти а то с ним дела не имел.
    дино спасиб
     
  6. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    А тут крон необязателен! Просто каждый раз после того как спарсил новости, оставляй в базе или в отдельном файлике текущую метку времени. А в скрипте выдачи новостей из базы поставь проверку на пройденное время и если прошло времени больше чем заданный интервал, запускать скрипт парсинга новостей
    Ну что то типа:
    PHP:
    if(time()>=($parse_time+60*60*10)){NewsParse();}
     
  7. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    Можно использовать filemtime($filename) - дату последней модификации файла (к примеру, того же, в который и были кэшированы новости)
     
  8. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    кладите в базу, заюзайте крон, ничего страшного в нем нет. Если есть панелька управления то проблемы вообще не будет его настроить...
     
  9. idimka

    idimka

    Регистр.:
    31 авг 2007
    Сообщения:
    218
    Симпатии:
    51
    крон на хостинге можно даже не настраивать. есть сайты на которые запускают скрипты по расписанию - http://cronjob.ru/
     
  10. komyak

    komyak

    Регистр.:
    4 фев 2009
    Сообщения:
    487
    Симпатии:
    187
    в бд в любом случае нужно класть. Если будешь парсить в прямом эфире, то положишь сервер.
    Сделай таблицу в бд как уже посоветовали, или создавай файлы-метки и при каждом запуске проверяй. крон можно не использовать, просто встрой в страницу вызов проверки.