Автор Тема: проверка ссылок  (Прочитано 4457 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Lion

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 474
  • +0/-0
  • 0
    • Просмотр профиля
проверка ссылок
« : 25 Марта 2002, 13:50:06 »
Как наиболее быстро и рационально провести проверку ссылок (несколько тысяч).

Оффлайн BigHarry

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 69
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проверка ссылок
« Ответ #1 : 25 Марта 2002, 15:45:55 »
Боюсь - быстро не получится, ибо надо будет проанализировать ответ (а там, помимо 404, может быть и редирект), да ещо сервера могут быть временно недоступны, да ещо ДНС-ы могут завернуты раком - в общем - быстро тут не катит.

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проверка ссылок
« Ответ #2 : 25 Марта 2002, 17:39:39 »
Цитировать
Как наиболее быстро и рационально провести проверку ссылок (несколько тысяч).

какая именно задача стоит?
проверить правильность написания в соответствии с форматом или еще и сделать запрос на сервер?
если на правильность, то с помощью регулярных выражений.
см. пример на php.spb.ru
с уважением,
магистр белой магии.

Оффлайн Lion

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 474
  • +0/-0
  • 0
    • Просмотр профиля
проверка ссылок
« Ответ #3 : 25 Марта 2002, 17:48:10 »
Цитировать
соответствии с форматом или еще и сделать запрос на сервер?

Задача очень простая, нужно проверить жив ли сайт на который ссылается ссылка, т.е. отдает ли сервер код 200. Мне это все для каталога нужно.

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
проверка ссылок
« Ответ #4 : 25 Марта 2002, 17:51:04 »
для каталога обычно такую проверку осуществляют, когда посетитель пытается перейти по этой ссылке. если ссылка дохлая - об этом сообщается администратору, который потом ее вручную проверяет еще раз для верности и удаляет
ну, будем исповедоваться?

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проверка ссылок
« Ответ #5 : 25 Марта 2002, 18:03:28 »
полностью согласен с AliMamed.


Lion, скорее всего в данном случае нужно использовать HEAD запросы. минимум трафика. статус сразу можно определить.
с уважением,
магистр белой магии.

Оффлайн Ancient

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 89
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ancient.dax.ru
проверка ссылок
« Ответ #6 : 25 Марта 2002, 23:09:38 »
Не знаю быстро будет или нет, но вот тебе примерчик проверки...

function check_url($url) {
    if (eregi( \'^http://\', $url)) {
        $urlArray = parse_url($url);
        if (!$urlArray[port]) $urlArray[port] =  \'80\';
        if (!$urlArray[path]) $urlArray[path] =  \'/\';
        $sock = fsockopen($urlArray[host], $urlArray[port], &$errnum,
&$errstr);
        if (!$sock) $res =  \'DNS\';
        else {
        $dump .=  "GET $urlArray[path] HTTP/1.1\\r\\n";
        $dump .=  "Host: $urlArray[host]\\r\\nConnection: close\\r\\n";
        $dump .=  "Connection: close\\r\\n";
        fputs($sock, $dump);
        while ($str = fgets($sock, 1024)) {
            if (eregi("^http/[0-9]+.[0-9]+ ([0-9]{3}) [a-z ]*", $str))
                $res = trim(eregi_replace(\'^http/[0-9]+.[0-9]+([0-9]{3})[a-z
]*\',
"\\\\1", $str));
                if (eregi("^Content-Type: ", $str))
                    $res[contentType] = trim(eregi_replace("^Content-Type: ",
"",
$str));
            }
            fclose($sock);
            flush();
            return $res;
        }
    } else $res = "N/A";
    return $res;
}

?>
Ancient Team

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проверка ссылок
« Ответ #7 : 25 Марта 2002, 23:22:52 »
только можно использовать HEAD запросы и убрать лишний eregi.
с уважением,
магистр белой магии.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28