Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверка существования сайта! 
:(
    Опции темы
mishaSL
Дата 17.7.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Alx @  17.7.2007,  11:43 Найти цитируемый пост)
виноват, с IP тоже работает.. но у меня подвисает когда нерабочий IP..

Сделайте таймаут:
Код

function checkIP($host)
{   $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$host);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1); 
    curl_setopt($cUrl, CURLOPT_TIMEOUT, 4);
    curl_exec($ch);
    curl_close($ch);
}




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
mishaSL
Дата 17.7.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Также можете попробовать так (писал только что и торопясь, но вроде работает быстрее):
Код

function checkIP($ip) {
    $ipL = ip2long($ip);
    if ($ipL === -1 || $ipL === false) {
        return false;
    }    
    $hostname = gethostbyaddr($ip);
    $ipH = ip2long($hostname);
    if ($ipH === -1 || $ipH === false) {
        return true;
    }    
    return false;
}

$ips = array('89.178.145.81','80.86.84.99','77.77.77.77','asdasdasdasd');

foreach($ips as $v) {
    var_dump(checkIP($v));
}




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alx
Дата 17.7.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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..(


--------------------
PM MAIL WWW ICQ   Вверх
GZep
Дата 17.7.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



mishaSL, по моему ты что то напутал там c return в своей функции.


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
mishaSL
Дата 17.7.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Alx @  17.7.2007,  12:25 Найти цитируемый пост)
спасибо за желание помочь, только сейчас checkIP('89.178.145.81') возвращает true..
хотя я сейчас под этим айпи с dialup`а зашел... http://89.178.145.81 - 404-ая..

Либо я перестал вас понимать. Либо вы не понимаете что хотите сделать. Опишите пожалуйста задачу еще раз подробнее.
То что вы зашли под этим IP с dialup`а и этот IP не открывается через http протокол - это вполне логично, да и хост этого IP (89-178-145-81.broadband.corbina.ru) тоже не должен открываться через HTTP. Это правильно. 
Расскажите подробнее что вы хотите проверить по IP?

Добавлено через 1 минуту и 5 секунд
Цитата(GZep @  17.7.2007,  12:38 Найти цитируемый пост)
mishaSL, по моему ты что то напутал там c return в своей функции. 

Не исключено, но вроде все правильно. Что именно напутал?


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alx
Дата 17.7.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



mishaSL,
ок тогда сначала smile
есть веб-интерфейс. в общем-то большая веб-форма. когда юезр нажимает submit или "начать поиск" запрос формы должен отправится db.exe, написанному на delphi. последнее меня не касается, мне лишь надо отправить запрос. db.exe будет лежать на нескольких серверах с разным IP, чтобы исключить возможность недоступности сервера. есть список ip этих серверов в txt-файле, который формирует заказчик. я читаю его функцией file() и проверяю поочереди IP, не висит ли сервер. если нет, я должен отправить на этот сервер файлу db.exe запрос и выйти из цикла.
фактически - выбрать первый рабочий сервер...


--------------------
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 17.7.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Alx @  17.7.2007,  13:05 Найти цитируемый пост)
мне лишь надо отправить запрос. db.exe будет лежать на нескольких серверах с разным IP

Ок, теперь понятнее. Так вот, как вы будете отправлять запрос, т.е. через какой порт? 
Если 80 и запрос будет отправляться по http протоколу, то можете проверять либо через функцию которую я вам дал, но лучше через curl (там можете указать явно порт) и задать небольшой timeout.

P.S. А то что вы сейчас проверяли IP по которому подключены к интернету, то этот IP существует и доступен, просто 80 порт на сервере закрыт и все.



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alx
Дата 17.7.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



спасибо, порт 80 скорее всего.. а curl в любом случае лучше использовать или только если порт не 80?


--------------------
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 17.7.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Alx @  17.7.2007,  15:22 Найти цитируемый пост)
спасибо, порт 80 скорее всего.. а curl в любом случае лучше использовать или только если порт не 80? 


Смотря как запрос будет посылаться. Через curl или через что?

В моем примере функции checkIP я предполагал, что возможно некоторые IP вообще не будут существовать и соответственно их надо проверить. Но у тебя будет список с серверами, где заранее известно что такие существуют. Нужно только проверить доступен ли он в данный момент. Решение: подключаешься через curl - если подключился и ответ тот что надо, посылаешь через это подключение запрос. Если же не получилось -  пытаешься подключиться к следующему.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alx
Дата 17.7.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



mishaSL, 
а как послать запрос через curl?


--------------------
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 17.7.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Alx @  17.7.2007,  17:27 Найти цитируемый пост)
mishaSL, 
а как послать запрос через curl?

Это зависит от конкретной ситуации. 
К примеру самый простой имхо способ - это GET методом отправляешь запрос. Получаешь от db.exe (твоего файла на делфи или какого-то другого) ответ в виде XML-файла (формат XML файла согласуй заранее, с тем кто пишет приложение на делфи). И уже собственно парсишь этот XML файл и выводишь результат.
Как получить удаленный файл с помощью curl я описывал здесь, в этой функции сразу есть проверка чтобы сервер давал отклик 200.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alx
Дата 18.7.2007, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



cпасибо


--------------------
PM MAIL WWW ICQ   Вверх
Alx
Дата 18.7.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



сделал так:

Код

<?php

$ips = file('iplist.txt');

foreach($ips as $v)
{   $v = trim($v);
    if(checkIP($v))
    {   sendReq($v);
        break;
    }
}

function checkIP($ip)
{   $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $ip);
      curl_setopt($ch, CURLOPT_HEADER, 1);
      curl_setopt($ch, CURLOPT_NOBODY, 1); 
      curl_setopt($ch, CURLOPT_TIMEOUT, 4);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $headers = curl_exec($ch);
      curl_close($ch);

    if(strstr($headers,"HTTP")) $c = substr($headers,9,3);
    return $c == "200";
}

function sendReq($ip)
{   $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://{$ip}:1500");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
    curl_exec($ch);
    curl_close($ch);
}

?>


всем спасибо!)


--------------------
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0624 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.