![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| $дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 17 Всего: 45 |
интересно, как еще это можно сделать? пока делаю так, и вроде все работает:
|
|||
|
||||
| penizillin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 10.11.2004 Репутация: 8 Всего: 9 |
можно http-хедер читать, он размером меньше, и инфу дает (200, 404 или еще чего).
и анализировать соответственно. |
|||
|
||||
| Black |
|
|||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 7 Всего: 45 |
ну тогда надо использовать сокеты... -------------------- Могу все, но ничего не умею :-) |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
По сути это работать не может без включения директив конфигурации PHP...
Вообще хост на существование можно проверить так: 1. С помощью system(): выполнить ping и проработать результат. 2. Воспользоваться gethostbyname(); либо вернет IP, либо пустую строку. Добавлено @ 20:37 Сокеты тоже можно использовать, но вариант не самый надежный.. |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
PHP-DIRECTOR
не обязательно сокеты, можно и curl, удобнее... |
|||
|
||||
| $дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 17 Всего: 45 |
всем спасибо! попробую все варианты!
|
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
я пробывал gethostbyaddr(), если он не находит IP, то подвисает на несколько секунд. совсем не мило. Добавлено через 12 минут и 37 секунд ping тоже работает очень медленно..( Добавлено через 13 минут и 26 секунд а как читать header через curl? |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
у меня есть список IP-серверов, мне нужно поочереди проверить их и отправить запрос на первый рабочий..
|
|||
|
||||
| mishaSL |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Вот функция через которую я проверяю существование домена:
работает достаточно быстро 100 доменов проверяет ~3 секунд. Для проверки сделал так:
Alx, поверь не через cURL не через сокеты быстрее не будет. -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
||||
|
|||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 20 Всего: 42 |
если нужен curl, то, чтобы получить только заголовки, используйте
curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| Levsha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 30.9.2005 Репутация: нет Всего: 4 |
Как альтернатива, можно пробивать через хуиз
-------------------- Предлагаем создание сайта в Хабаровске - http://web-alt.ru. А ты сдал анализы? Самый полный анализ сайта! |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
mishaSL,
спасибо, а как сделать, чтобы не по dns, а по ip тестить? |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
mishaSL,
функция ip2long ведь только проверяет правильно ли сформирован ip.. но она не тестит его на доступность.. Добавлено через 8 минут и 39 секунд Golda, curl тоже работает только с DNS.. а мне бы IP... |
|||
|
||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Alx, что-то я вас немного не понял. По какому IP вы хотите проверять? В моем примере мы получаем IP адрес интернет хоста(gethostbyname()). Если IP получить не удалось, значит хост неправильный. Добавлено через 3 минуты и 4 секунды А вот как проверять DNS записи, то пример можно посмотреть здесь -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| Alx |
|
||||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
виноват, с IP тоже работает.. но у меня подвисает когда нерабочий IP..
http://alx.vingrad.ru/alx/research/tourbaza/server.php Добавлено @ 11:44 mishaSL,
у них может не быть DNS... Это сообщение отредактировал(а) Alx - 17.7.2007, 11:46 |
||||
|
|||||
| mishaSL |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Сделайте таймаут:
-------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
||||
|
|||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Также можете попробовать так (писал только что и торопясь, но вроде работает быстрее):
-------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
mishaSL,
спасибо за желание помочь, только сейчас checkIP('89.178.145.81') возвращает true.. хотя я сейчас под этим айпи с dialup`а зашел... http://89.178.145.81 - 404-ая.. Добавлено через 1 минуту и 59 секунд и для 83.237.144.228..( |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: 8 Всего: 32 |
mishaSL, по моему ты что то напутал там c return в своей функции.
-------------------- ![]() ![]() |
|||
|
||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Либо я перестал вас понимать. Либо вы не понимаете что хотите сделать. Опишите пожалуйста задачу еще раз подробнее. То что вы зашли под этим IP с dialup`а и этот IP не открывается через http протокол - это вполне логично, да и хост этого IP (89-178-145-81.broadband.corbina.ru) тоже не должен открываться через HTTP. Это правильно. Расскажите подробнее что вы хотите проверить по IP? Добавлено через 1 минуту и 5 секунд Не исключено, но вроде все правильно. Что именно напутал? -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
mishaSL,
ок тогда сначала есть веб-интерфейс. в общем-то большая веб-форма. когда юезр нажимает submit или "начать поиск" запрос формы должен отправится db.exe, написанному на delphi. последнее меня не касается, мне лишь надо отправить запрос. db.exe будет лежать на нескольких серверах с разным IP, чтобы исключить возможность недоступности сервера. есть список ip этих серверов в txt-файле, который формирует заказчик. я читаю его функцией file() и проверяю поочереди IP, не висит ли сервер. если нет, я должен отправить на этот сервер файлу db.exe запрос и выйти из цикла. фактически - выбрать первый рабочий сервер... |
|||
|
||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Ок, теперь понятнее. Так вот, как вы будете отправлять запрос, т.е. через какой порт? Если 80 и запрос будет отправляться по http протоколу, то можете проверять либо через функцию которую я вам дал, но лучше через curl (там можете указать явно порт) и задать небольшой timeout. P.S. А то что вы сейчас проверяли IP по которому подключены к интернету, то этот IP существует и доступен, просто 80 порт на сервере закрыт и все. -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
спасибо, порт 80 скорее всего.. а curl в любом случае лучше использовать или только если порт не 80?
|
|||
|
||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Смотря как запрос будет посылаться. Через curl или через что? В моем примере функции checkIP я предполагал, что возможно некоторые IP вообще не будут существовать и соответственно их надо проверить. Но у тебя будет список с серверами, где заранее известно что такие существуют. Нужно только проверить доступен ли он в данный момент. Решение: подключаешься через curl - если подключился и ответ тот что надо, посылаешь через это подключение запрос. Если же не получилось - пытаешься подключиться к следующему. -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
mishaSL,
а как послать запрос через curl? |
|||
|
||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Это зависит от конкретной ситуации. К примеру самый простой имхо способ - это GET методом отправляешь запрос. Получаешь от db.exe (твоего файла на делфи или какого-то другого) ответ в виде XML-файла (формат XML файла согласуй заранее, с тем кто пишет приложение на делфи). И уже собственно парсишь этот XML файл и выводишь результат. Как получить удаленный файл с помощью curl я описывал здесь, в этой функции сразу есть проверка чтобы сервер давал отклик 200. -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
cпасибо
|
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
сделал так:
всем спасибо!) |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |