За последние 24 часа нас посетили 18800 программистов и 1652 робота. Сейчас ищут 939 программистов ...

Два вопроса от новичка (парсинг)...

Тема в разделе "PHP для новичков", создана пользователем Виталий-82, 7 авг 2018.

  1. Виталий-82

    Виталий-82 Новичок

    С нами с:
    25 окт 2016
    Сообщения:
    9
    Симпатии:
    0
    Всем привет! Есть два вопроса про парсинг.

    1) Написал функцию генератор строки (последовательной). При каждом вызове функции возвращается строка:
    PHP:
    1. getString(); // aaa
    2. getString(); // aab
    3. getString(); // aac
    4. ...
    5. getString(); // zzz
    6. getString(); // aaaa
    7. getString(); // aaab
    8. getString(); // aaac
    9. ...
    Функцию использую в цикле, 'http://'.getString().'ru' - получаю ссылку. И при помощи file_get_contents получаю код сайта (если нет ошибки). Далее ищу в коде необходимую мне информацию и если таковая имеется, то помещаю домен в массив. Т.е. я проверяю все сайты подряд на нужную мне информацию.

    Но есть одна проблема: Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\w.ru\www\index.php on line 20

    Можно ли ее обойти, эту проблему?

    ----------------------------------------------------------------------------------------------------------------

    2) И вопрос второй:

    Насколько законно парсить сайты?

    Я так понимаю что DOS-атака это когда с определённого источника появляется большое количество запросов на некоторый инернет-ресурс.

    Когда мы переходим "красную черту"?

    Писал заказчику парсинг погоды, при каждом обновлении, сайт заказчика обращается к сайту погоды, выхватывает с него инфу. Является ли это нарушением?

    Спасибо!
     
  2. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Сходу и без заморочек, просто увеличить время исполнения скрипта в настройках php, гуглится на раз два. Или же пересмотреть свой код найти узкие места, разбить на более мелкие задачи, добавить проверки на ожидание ответа и т.д

    Никто не запрещает, могут только обидеться, ну ли выставить если в коммерческих целях используешь их контент без согласования.
     
  3. Виталий-82

    Виталий-82 Новичок

    С нами с:
    25 окт 2016
    Сообщения:
    9
    Симпатии:
    0
    "пересмотреть свой код найти узкие места" - там всего 2 функции по 15 строк каждая. Они работают быстро, проблема в скорости загрузки сайтов, к которым я обращаюсь, как бы я не хотел, но каждый сайт грузится и этого я изменить не могу)) Увеличить время исполнения скрипта можно, но тоже не выход, вопрос в другом. Может ли скрипт PHP работать сутками? Т.е. сутками перебирать сайты. Скажем перебрать 100000 сайтов и по окончании вывести отчёт. Способен ли PHP на это?

    Спасибо!
     
    #3 Виталий-82, 7 авг 2018
    Последнее редактирование: 7 авг 2018
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    многопоточный curl юзаешь?
    если нет, то он изменит твоё представление о работе с большим кол-вом запросов :)
     
  5. Виталий-82

    Виталий-82 Новичок

    С нами с:
    25 окт 2016
    Сообщения:
    9
    Симпатии:
    0
    Ну вот хоть вы дали наводку, спасибо. Мне только это и нужно было, спасибо!
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Лучше использовать API-сервисы погоды. Мне нравится https://openweathermap.org/
     
  7. Ash214

    Ash214 Новичок

    С нами с:
    2 авг 2018
    Сообщения:
    6
    Симпатии:
    0
    1) вынеси тело цикла в отдельный скрипт php и запускай его через exec("/usr/bin/php/path/to/script.php");
    2) запускай тело цикла в форках https://habr.com/post/148688/