Решаема ли задача курлом?

Тема в разделе "PHP", создана пользователем phillip, 21 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Некий сайт раз в секунду отдает страницу. каждый раз новый контент.
    Я хочу успеть собрать каждую секунду, и засунуть в свою БД.
    Возможно ли это сделать курлом? У кого какие соображения. Как обеспечить высокую скорость
     
  2. Google.com

    Google.com Читатель

    Заблокирован
    Регистр.:
    16 фев 2010
    Сообщения:
    250
    Симпатии:
    295
    Думаю можно...если пинг и размер страницы небольшой. Т.е. если время скачивания и сохранения страницы будет меньше секунды, то можно обойтись однопоточным курлом.
     
    phillip нравится это.
  3. saxel

    saxel Постоялец

    Регистр.:
    4 дек 2007
    Сообщения:
    118
    Симпатии:
    23
    curl + sleep
    http://php.net/manual/en/function.sleep.php
    но при том, что получить и сохранить будет занимать ооочень мало

    curl + usleep
    http://php.net/manual/en/function.usleep.php
     
    phillip нравится это.
  4. McLay

    McLay Постоялец

    Регистр.:
    20 май 2008
    Сообщения:
    70
    Симпатии:
    15
    я б все таки изначально делал с многопоточным курлом. т.к. на пинг особой надежды никогда нет, да и сайт может поменять периоды вылачи
     
    phillip нравится это.
  5. theorc

    theorc Создатель

    Регистр.:
    23 авг 2010
    Сообщения:
    18
    Симпатии:
    1
    phillip нравится это.
  6. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Мультикурл юзайте.
    По-другому наврятли получится. Секунда - не время.
    Просто придётся сделать проверку на одинаковость страниц.
     
    phillip нравится это.
  7. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Да какой мультикурл, зачем здесь? Здесь и без курла вообще можно:
    PHP:
    set_time_limit(0);
    do {
       
    $buf file_get_contents('http://site.com/url.htm');
       
    $md5 md5($buf);
       if (!
    file_exist("files/$md5.htm")) {
          
    fwrite(fopen("files/$md5.htm",'w'), $buf);
       }
       
    sleep(1);
    } while(
    1);
    Потом запускаешь десяток копий этого скрипта и вуаля. Они тебе будут параллельно долбиться на сайт раз в секунду, и весь новый новый контент сохранять в папочку files (если никто другой еще не сохранил). И пусть работают себе одновременно..

    Намного легче, чем парить себе мозг с мультикурлом.
     
    phillip нравится это.
  8. Google.com

    Google.com Читатель

    Заблокирован
    Регистр.:
    16 фев 2010
    Сообщения:
    250
    Симпатии:
    295
    Верно, если размер страницы небольшой и у тс не медленный интернет. Ведь есть страницы, которые грузятся дольше секунды (не картинки и т.д. и т.п, а сам html исходник страницы)
     
    phillip нравится это.
  9. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    А не важно, сколько грузится сама страница. Пусть она грузится полминуты, а данные на ней меняются каждую секунду. Вот мы запросили одну страницу - сидим полминуты ее грузим. Во втором процессе в это же время запросили ее еще раз - и тоже грузим. Там будет или такая же страница (если мы из двух потоков успели сделать запрос в одну и ту же секунду), или уже другая. Если процессов много - значит многие будут грузить одно и то же, но зато ничего не пропустят. Если мало - шансов пропустить больше, но зато и дублей скачиваться будет меньше.

    А дальше - вот процесс скачал себе за полминуты страничку, подождал секунду (не понятно, зачем, ну да ладно, не критично) - и пошел за новой страничкой. Эта новая будет уже +31 к предыдущей, но ведь остальные процессы не дремали, и успели промежуточные 30 начать качать.

    Данная стратегия не рассмативает ситуацию, когда сам сервер генерит страницу больше 1й секунды, т.к. в данном случае "каждую секунду меняется контент" не имеет смысла.
     
  10. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Ну так а задача добиться загрузки каждую секунду.
     
Статус темы:
Закрыта.