2009-07-11 2 views
4

У меня есть сервер Windows, который периодически теряет возможность поиска информации DNS. Я пытаюсь добраться до основной причины проблемы, но в то же время я хотел бы отслеживать, может ли сервер выполнять поиск.Поиск DNS в PHP

В основном, он должен попытаться найти некоторые общие имена хостов и отображение «Успех», если поиск выполнен успешно.

Сайт запускает PHP, поэтому я бы предпочел, чтобы скрипт монитора был на PHP, но если кто-то знает, как это сделать в ASP/.NET, это тоже сработает.

ответ

6

http://www.php.net/manual/en/function.dns-get-record.php - это функция в php, которая звучит так, как будто вы после.

+0

Спасибо. Эта функция не была доступна в Windows в последний раз, когда я это пробовал, но она была доступна в PHP 5.3+. Сначала я должен был проверить его. –

0

но есть небольшое ограничение этой функции Changelog: v. PHP 5.3.0 - эта функция теперь доступна на платформах Windows.

если вы не хотите обновлять php на IIS. есть еще одна альтернатива, выполняющая dig для двоичных файлов Windows. здесь dig for windows. вам также может понадобиться это для вашей собственной программы не для какой-либо программы. Это сверх сверхнормативной команды nslookup.

+0

В моем случае это работает, потому что сервер работает 5.3, но изначально я задавал вопрос, потому что считал, что эта функция недоступна в Windows. –

2

В Windows PHP функции DNS недоступны изначально до PHP 5.3. Вам понадобится класс Pear Net_DNS. http://pear.php.net/package/Net_DNS

Пример использование:

require_once 'Net/DNS.php'; 

$resolver = new Net_DNS_Resolver(); 
$resolver->debug = $this->debug; 
// nameservers to query 
$resolver->nameservers = array('192.168.0.1'); 
$resp = $resolver->query($domain, 'A'); 

источник: http://code.google.com/p/php-smtp-email-validation/source/browse/trunk/smtp_validateEmail.class.php#232

0

"пинг" всегда выполняет поиск DNS (вперед и назад), прежде чем пинг имени хоста под вопросом. Написание сценария оболочки для использования ping (или копания), чтобы увидеть, работает ли ping в игре, остается как упражнение для читателя.

Другим вариантом является использование кэширующего DNS-сервера на локальном компьютере, который кэширует ответы с восходящего DNS-сервера и отправляет данные из кеша, когда восходящий поток не работает. Мой собственный Deadwood - это крошечный 32-битный Windows или UNIX-файл, который может это сделать (64k, если вы хотите полную рекурсию DNS)