doublench21
@doublench21

Можно ли изменить работу скрипта ?

Есть скрипт:
<?php
set_time_limit(0);
ini_set('error_reporting', E_ALL);
//ini_set('log_errors', '1');
//ini_set('display_errors', '1');
$allUseragents = array(
    "Opera/9.23 (Windows NT 5.1; U; ru)",
    "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092816 Mobile Safari 1.1.3",
    "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN) AppleWebKit/533+ (KHTML, like Gecko)",
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko)",
    "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.34 (KHTML, like Gecko) Dooble/1.40 Safari/534.34",
    "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fi-fi) AppleWebKit/420+ (KHTML, like Gecko) Safari/419.3",
    "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8.1 (KHTML, like Gecko) Safari/312.6",
    "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20100121 Firefox/3.5.6 Wyzo/3.5.6.1"
    //...
);
$links = array(
    'http://mydomain0.com/',
    'http://mydomain1.com/',
    'http://mydomain2.com/'
    //...
);
$maxThreads = 10; // скачивать будем в десять потоков
$multicurlInit = curl_multi_init();
do {
    while (@$active <= $maxThreads) {
        @$active++;
        if (count($links) == 0) {
            break;
        }
        $idLink = array_rand($links);
        $link = $links[$idLink];
        unset($links[$idLink]);
        $agent = $allUseragents[array_rand($allUseragents)];
        $newThread = curl_init();
        curl_setopt_array($newThread, array(
                CURLOPT_URL => $link,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_CONNECTTIMEOUT => 10,
                CURLOPT_TIMEOUT => 100,
                CURLOPT_USERAGENT => $agent,
                CURLOPT_FAILONERROR => false,
            )
        );
        curl_multi_add_handle($multicurlInit, $newThread);
        unset($newThread);
    }
    $curlMultiResult = curl_multi_exec($multicurlInit, $active);
    do {
        $result = curl_multi_info_read($multicurlInit);
        if (!is_array($result)) {
            break;
        }
        $info = curl_getinfo($result['handle']);
        print curl_multi_getcontent($result['handle']);
        print_r($info);
        curl_multi_remove_handle($multicurlInit, $result['handle']);
        curl_close($result['handle']);
    } while (true);
    if (count($links) == 0 && $active == 0) {
        break;
    }
} while (true);


Можно ли сделать так, чтобы он сохранял html странички ссылок, а не выводил содержимое на экран, как он делает сейчас ?
  • Вопрос задан
  • 2213 просмотров
Решения вопроса 1
rework
@rework
Помог ответ? В благодарность отметь его решением
Замени строку:

print curl_multi_getcontent($result['handle']);

на что-то, типа:

file_put_contents('filename.txt', $result['handle']);


вместо filename.txt укажи путь до нужного файла и не забудь этому файлу права на запись дать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ilyaplot
@ilyaplot
PHP программист
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы