PHP лучший способ отправлять запросы на сотни сайтов? - PullRequest
1 голос
/ 28 августа 2011

Я пытался использовать Rolling Curl, Epi Curl и другие PHP-решения для нескольких скручиваний, которые существуют, и в среднем требуется 180 секунд для отправки запросов на сайты JUST 40 и получения данных (я говорю ополучать от них только небольшие небольшие строки успеха / неудачи, то есть собачьи медленно !!!

Это хорошо только с 1 пост-запросом, который составляет 3-6 секунд, и я даже не знаю, является ли это дажехорошо, потому что я вижу, что другие говорят о получении 1-секундных ответов, что является сумасшествием.

Я также пытался использовать proc_open для запуска команд оболочки linux (curl, wget), но это тоже медленно, и не дружественно к серверу.

То, что я в значительной степени пытаюсь сделать, - это плагин Wordpress, который может управлять несколькими сайтами Wordpress и выполнять массовые обновления, удаленные публикации, управление блогроллом и т. Д. Я знаю, что там есть сайт.под названием managewp.com, но я не хочу пользоваться их услугами, потому что я хочу, чтобы сайты, которыми я управляю, были частными и разрабатывали свои собственные.Что я замечаю в них, так это то, что их запрос / ответ смехотворно быстр, и я просто озадачен тем, как они могут это сделать, особенно на сотнях сайтов.

Так что кто-то может пролить свет, как я могусделать эти почтовые запросы быстрее?

Редактировать

Я немного подумал и спросил себя: "Что такого важного в получении ответа? Это не похоже наотправленные запросы не обрабатываются должным образом, все они выполняют 99% времени! "

И вот я подумал, может быть, я смогу просто отправить все запросы без получения ответов.И если я действительно хочу отследить эти процессы и то, как они пошли, я могу попросить эти дочерние сайты отправить запрос на публикацию со статусом процесса и сделать так, чтобы главный сайт добавил их в таблицу базы данных и получилajax-запрос, например, каждые 10 секунд или около того для обновления статуса или чего-то в этом роде ... как это звучит?

Ответы [ 2 ]

0 голосов
/ 28 августа 2011

В настоящее время я работаю над проектом, загружающим сотни URL-адресов одновременно с PHP и curl_multi .Делайте пакетов до 250 URL и играйте с CURLOPT_TIMEOUT и CURLOPT_CONNECTTIMEOUT, чтобы улучшить скорость вашего кода.

У меня есть класс cURL (2500+ строк), обрабатывающий всю магию cURL, включаямульти и прямо к загрузке файлов.250 URL / 15-25 секунд с использованием приличных таймаутов. (Но я не делюсь этим бесплатно ...)

PS : Для загрузки многих URL-адресов потребуется использовать временные файлы в качестве целей загрузки cURLа не память.Просто мысль ...

0 голосов
/ 28 августа 2011

cUrl занимает около 0,6 - 0,8 секунд на запрос

Таким образом, для примерно 500 веб-сайтов это может занять от 300 до 400 секунд.

Вы можете сделать это через цикл.

$ch = curl_init(); // Init cURL

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/post.php"); // Post location
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 1 = Return data, 0 = No return
curl_setopt($ch, CURLOPT_POST, true); // This is POST

// Our data
$postdata = array(
    'name1' => 'value1',
    'name2' => 'value2',
    'name3' => 'value3',
    'name4' => 'value4'
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); // Add the data to the request

$o = curl_exec($ch); // Execute the request

curl_close($ch); // Finish the request. Close it.

Это также зависит от скорости вашего соединения. Из центра обработки данных все должно быть хорошо, если тестирование из дома может дать не очень хорошие результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...