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

Поиск:

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


Эксперт
***


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

Репутация: 17
Всего: 45



интересно, как еще это можно сделать? пока делаю так, и вроде все работает:

Код

<?

$link = "http://www.ya.ru/";
$file = @fopen($link, "r");
if( @fread($file, 99999999)) echo 'yes'; else echo 'no';

?>

PM MAIL   Вверх
penizillin
Дата 13.11.2004, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

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



можно http-хедер читать, он размером меньше, и инфу дает (200, 404 или еще чего).
и анализировать соответственно.
PM MAIL ICQ   Вверх
Black
Дата 13.11.2004, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 7
Всего: 45



Цитата(penizillin @ 13.11.2004, 20:26)
можно http-хедер читать, он размером меньше, и инфу дает (200, 404 или еще чего).
и анализировать соответственно.

ну тогда надо использовать сокеты...


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Mal Hack
Дата 13.11.2004, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 122
Всего: 261



По сути это работать не может без включения директив конфигурации PHP...
Вообще хост на существование можно проверить так:
1. С помощью system(): выполнить ping и проработать результат.
2. Воспользоваться gethostbyname(); либо вернет IP, либо пустую строку.
Добавлено @ 20:37
Сокеты тоже можно использовать, но вариант не самый надежный..
PM ICQ   Вверх
Opik
Дата 13.11.2004, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PHP-DIRECTOR
не обязательно сокеты, можно и curl, удобнее...
PM MAIL Skype   Вверх
$дмитрий
Дата 13.11.2004, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 17
Всего: 45



всем спасибо! попробую все варианты!
PM MAIL   Вверх
Alx
Дата 12.7.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


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

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



Цитата(Mal Hack @  13.11.2004,  20:36 Найти цитируемый пост)
2. Воспользоваться gethostbyname(); либо вернет IP, либо пустую строку. 

я пробывал gethostbyaddr(), если он не находит IP, то подвисает на несколько секунд. совсем не мило.

Добавлено через 12 минут и 37 секунд
ping тоже работает очень медленно..(

Добавлено через 13 минут и 26 секунд
а как читать header через curl?


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


Ajaxy
****


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

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



у меня есть список IP-серверов, мне нужно поочереди проверить их и отправить запрос на первый рабочий..


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


Эксперт
***


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

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



Вот функция через которую я проверяю существование домена:
Код

function checkDomen($domen)
{
    $host = gethostbyname($domen);
    $ip = ip2long($host);
    if ($ip === -1 || $ip === false) {
        return false;
    }
    return true;
}


работает достаточно быстро 100 доменов проверяет ~3 секунд. Для проверки сделал так:
Код

<?php
function microTimes()
{
    list($msec, $sec) = explode(chr(32), microtime());
    return ($sec+$msec);
}
define('TIME_START', microTimes());
function checkDomen($domen)
{
    $host = gethostbyname($domen);
    $ip = ip2long($host);
    if ($ip === -1 || $ip === false) {
        return false;
    }
    return true;
}

for($i=0;$i<100;$i++) {
checkDomen('www.test'.mt_rand().'.ru');
}

echo "Выполнено за ".round(microTimes()-TIME_START, 6)." сек.\n";
?>




Alx, поверь не через cURL не через сокеты быстрее не будет.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Levsha
Дата 12.7.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



Как альтернатива, можно пробивать через хуиз


--------------------
PM   Вверх
Alx
Дата 16.7.2007, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


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

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



mishaSL, 
спасибо, а как сделать, чтобы не по dns, а по ip тестить?


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


Ajaxy
****


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

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



mishaSL, 
функция ip2long ведь только проверяет правильно ли сформирован ip.. но она не тестит его на доступность..

Добавлено через 8 минут и 39 секунд
Golda, curl тоже работает только с DNS.. а мне бы IP...


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


Эксперт
***


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

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



Цитата(Alx @  16.7.2007,  22:25 Найти цитируемый пост)
спасибо, а как сделать, чтобы не по dns, а по ip тестить?


Цитата(Alx @  17.7.2007,  11:14 Найти цитируемый пост)
функция ip2long ведь только проверяет правильно ли сформирован ip.. но она не тестит его на доступность..


Alx, что-то я вас немного не понял. По какому IP вы хотите проверять?
В моем примере мы получаем IP адрес интернет хоста(gethostbyname()). Если IP получить не удалось, значит хост неправильный. smile

Добавлено через 3 минуты и 4 секунды
А вот как проверять DNS записи, то пример можно посмотреть здесь



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


Ajaxy
****


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

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



виноват, с 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_exec($ch);
    curl_close($ch);
}

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

checkIP($ips[1]); // существует, выводит
flush();
checkIP($ips[0]); // не существует, зависает

http://alx.vingrad.ru/alx/research/tourbaza/server.php

Добавлено @ 11:44
mishaSL, 
Цитата(Alx @  12.7.2007,  11:26 Найти цитируемый пост)
у меня есть список IP серверов, мне нужно поочереди проверить их и отправить запрос на первый рабочий.. 

у них может не быть DNS...


Это сообщение отредактировал(а) Alx - 17.7.2007, 11:46


--------------------
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.0583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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