PHP самый быстрый способ проверить список доменов - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть список из 20 000 доменов, которые я хочу преобразовать в IP-адреса.Я ищу самый быстрый способ , чтобы сделать это в php.

Я использовал gethostbynamel(), но это слишком медленно.Я ищу другую команду, которая может отфильтровать хосты, которые вообще не существуют , а затем выполнить gethostbynamel()

  1. Я пробовал checkdnsrr("host.com","A"), но это слишком медленно,
  2. curl также слишком медленный.

Ответы [ 4 ]

1 голос
/ 01 сентября 2011

Это не будет быстрее. Вам нужно будет связаться с каждым доменом, чтобы увидеть, если они доступны. Даже при среднем периоде обращения около 50 мс вам потребуется более 15 минут для проверки всех 20000 доменов. И это если вам не нужно ждать перерывов.

Вы получите только быстрее, если сделаете это многопоточным. Вы можете легко настроить 10 потоков для параллельного подключения к 10 серверам, что также сокращает время обработки в 10 раз.

Но PHP не предназначен для многопоточности, поэтому вы можете использовать другой инструмент.

Но с какой стати вы хотите проверить 20 000 доменов? Это должно быть что-то подозрительное ..

0 голосов
/ 10 мая 2012

script1.php

<?
if (!$argv[1]) exit;
$ip = gethostbynamel($argv[1]);
// do something
?>

script2.php

<?
$domains = array();
foreach($domains as $domain){
  shell_exec("php script1.php $domain");
}
?>

Возможно, не хватает памяти.

0 голосов
/ 01 сентября 2011

Некоторые идеи:

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

  • сортирует адреса, принадлежащие одному домену, в похожие группы и проверяет этот домен один раз для группы, а не для каждого адреса

  • это необходимо выполнить несколько разили только один раз?Если несколько раз, вы можете рассмотреть возможность кэширования ips с использованием кеша, такого как apc или zend cache, или сохранить IP-адреса каким-либо другим способом (файл или дБ) и протестировать этот ip, чтобы увидеть, разрешается ли он, и если нет, попробуйте новыйвызов dns

  • разделить задачу на несколько подзадач (несколько процессов php)

  • определить, какой сервер DNS для вас самый быстрый, и использовать его, Pear имеет пакет net dns с функциональностью, которая может удовлетворить ваши потребности.

0 голосов
/ 01 сентября 2011
  • улучшите скорость интернет-соединения
  • , если CURL медленный, это самый быстрый способ
...