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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Предупредить Ошибки сокетов 
:(
    Опции темы
Aliance
Дата 8.12.2005, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Через сокеты подключаюсь в странице с другого домена.
Но этот домен может не отвечать, как это предупредить?
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 8.12.2005, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Ставить таймаут и ждать - самый простой способ. По любому проверка будет поставленна на таймауте, реализованном самим сокетом или тобой, как либо иначе достоверно проверить жив ли хост нельзя, ИМXО.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 8.12.2005, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Не знаю, в данный момент при неполадках на том хосте мой скрипт грузит страницу 404 и соотв. ее и парсит. Мне это не нужно smile
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 8.12.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Надо заголовки почитать. Смотри, ели первый - не 2хх, то тебя либо редиректят либо домен не доступен, но это уже по таймауту
PM ICQ   Вверх
Aliance
Дата 8.12.2005, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Вот это я где-то и нашел, но это собственно не получается почему-то…
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 9.12.2005, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Цитата(Aliance @ 8.12.2005, 22:12)
но это собственно не получается почему-то…

Выкладывай код.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
CyClon
Дата 11.9.2007, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот время было свободное, наваял для тебя скрипт smile))

Код
<?php

function getFile($url)
{
    $purl = parse_url($url);
    if ($socket = fsockopen($purl['host'], 80, $errno, $errstr, 30)) {
        if (isset($pust['path'])) {
            $headers = "GET " . $purl['path'] . " HTTP/1.0\r\n";
        } else {
            $headers = "GET / HTTP/1.0\r\n";
        }
        $headers .= "Accept: */*\r\n";
        $headers .= "Accept-Language: ru\r\n";
        $headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\r\n";
        $headers .= "Host: " . $purl['host'] . "\r\n";
        $headers .= "Connection: Close\r\n\r\n";
        fputs($socket, $headers);
        if (substr(fgets($socket), 9, 3) != 200) {
            fclose($socket);
            return false;
        }
        $file = '';
        while (!feof($socket)) {
            $file .= fgets($socket);
        }
        fclose($socket);
        return substr($file, strpos($file, "\r\n\r\n") + 4);
    } else {
        return false;
    }
}

if ($file = getFile('http://yandex.ru')) {
    echo $file;
}

?>


Вписываем URL, об остальном скрипт позаботиться сам smile Думаю, понятен алгоритм работы. В результате получаем файл по указаному урлу без заголовков. Вся фишка в том, что сначала читается первая строчка ответа (около 15 байт), если ответ не 200 OK, то дальше чтение не идет, функция выбрасывает false.

В общем, enjoy =)

Добавлено через 2 минуты и 33 секунды
ЗЫ: Сорри что апнул очень старый топик, не заметил, но функция думаю пригодится некоторым smile


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


 




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


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

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