Ускорьте обработку больших объемов данных - PullRequest
0 голосов
/ 11 июля 2020

По порядку. У меня большая база доменов в текстовом формате.

  1. Я обрабатываю сам файл и добавляю домены в базу (около 20 тысяч за 30 секунд). Проблема во втором абзаце.
  2. После обработки я запускаю процесс чтения доменов из базы данных, затем обработку через CURL (оставляя только сайты с ответом 200) и чтение страницы исходного кода. Процесс проверки 20 тысяч доменов занял около 3 часов. Несмотря на то, что все это время сайт не работал. Просто кинул таймаут.

Вопрос: а можно ли ускорить этот процесс? (запустить скрипт рекурсивно) или реально c хотя бы оставить веб-сервер в рабочем состоянии во время процесса обработки (сервер мощный, но по какой-то причине он все равно дает сбой).

The logi c скрипта (пункт 2).

if($_POST['start'] == "true") {
    //...
    //SELECT DATABASE
    //...
    while($allRows) {
        $line = $allRows['INPUT_URL'];
        //...
        // GET CURL STATUS 200, IP adress and HTML code
        //...
        if($status == "200") {
            // strpos HTML code
            //...
            //add answer to another Database
        }
    }
}

Настройки завитка:

curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgents[array_rand($userAgents)]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...