Почекать базу ссылок php скриптом?

Тема в разделе "PHP", создана пользователем allsu, 7 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. allsu

    allsu Постоялец

    Регистр.:
    29 дек 2007
    Сообщения:
    135
    Симпатии:
    5
    Подскажите возможно ли организовать скрипт на php для проверки базы ссылок на работоспособность?
    (если не бесплатно то сколько будет стоить такой скрипт)
    Т.е. есть база ссылок каталогов или гостевых и т.п.
    необходимо проверить ссылки на работоспособность.

    Может существуют готовые решения для этих целей?
    Буду очень благодарен за добрый ответ совет!
     
  2. ModeX

    ModeX Прохожие

    Делается элементарно - запрашивать ссылки (сокетами или курлом) и сверять код ответа.
     
  3. allsu

    allsu Постоялец

    Регистр.:
    29 дек 2007
    Сообщения:
    135
    Симпатии:
    5
    А кодом сможете помочь?:ah:
     
  4. Kaimi

    Kaimi

    Регистр.:
    28 окт 2007
    Сообщения:
    257
    Симпатии:
    253
    Считай файл с линками в массив
    http://ru2.php.net/file
    Далее делай head запрос по списку
    например так
    Код:
    $fp = fsockopen("vkontakte.ru", 80, $errno, $errstr, 30);
    if (!$fp) { echo "$errstr ($errno)<br>"; } else {
        $out = "HEAD http://vkontakte.ru/ HTTP/1.0\r\n";
        $out .= "Host: vkontakte.ru\r\n";
        $out .= "Connection: Close\r\n\r\n";
        fwrite($fp, $out);
        $answ = fgets($fp, 128);
        fclose($fp);
    }
    
    И анализируй код ответа
     
  5. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    к примеру база ссылок идет в след форме в файле link.txt
    Код:
    mail.ru
    vodka.ru
    pivo.ru
    
    поехали кодить...

    читаем все ссылки и одновременно проверяем на работоспособность, используем код Kaimi

    Код:
    set_time_limit(0);
    
    function download($url)
    {
    $fp = fsockopen($url, 80, $errno, $errstr, 60);
    if ($fp) {
        $out = "HEAD http://".$url."/ HTTP/1.0\r\n";
        $out .= "Host: ".$url."\r\n";
        $out .= "Connection: Close\r\n\r\n";
        fwrite($fp, $out);
        $answ = fgets($fp, 128);
        fclose($fp);
        return $answ;
    }
    
    };
    
    
    $handle = fopen("./link.txt", "r");
    	while (!feof($handle)) 
    {
    	$buffer = fgets($handle, 4096);
    	$buffer=trim($buffer);
    	$rezult=download($buffer);
    	if(strstr($rezult,"200")){echo $buffer." OK \n";}else{echo $buffer." FUCK \n";};
    }
    fclose($handle);
     
  6. allsu

    allsu Постоялец

    Регистр.:
    29 дек 2007
    Сообщения:
    135
    Симпатии:
    5
    пробую тестить http://tytmoe.uuuq.com/cheker.php
    ошибку выдаёт :((
     
  7. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    ааа, у тебя вот как.

    добавь функцию разделения каждой строки на
    "сайт.домен" и "путь/до/скрипта"
    и поправь это в функцию давнлоад

    сейчас поправлю, там еще ошибку нашел
    и еще вопрос, у тебя все ссылки вида :
    http://сайт.домен/блабла.........
    ?
     
    allsu нравится это.
  8. allsu

    allsu Постоялец

    Регистр.:
    29 дек 2007
    Сообщения:
    135
    Симпатии:
    5
    да все ссылки длинные
     
  9. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    Код:
    <?php
    function download($site,$url)
    {
    $fp = fsockopen($site, 80, $errno, $errstr, 60);
    if ($fp) {
        $out = "HEAD ".$url." HTTP/1.0\r\n";
        $out .= "Host: ".$site."\r\n";
        $out .= "Connection: Close\r\n\r\n";
        fwrite($fp, $out);
        $answ = fgets($fp, 128);
        fclose($fp);
        return $answ;
    }
    
    };
    
    
    $handle = fopen("./link.txt", "r");
    	while (!feof($handle)) 
    {
    	$buffer = fgets($handle, 4096);
    preg_match("!http://(.*?)/(.*?)\n!si",$buffer,$ok);
    $rezult=download($ok[1],"/".$ok[2]);
         if(strstr($rezult,"200 OK")){echo $buffer." OK \n";}else{echo $buffer." FUCK \n";};
    }
    fclose($handle);
    
    ?>
     
  10. allsu

    allsu Постоялец

    Регистр.:
    29 дек 2007
    Сообщения:
    135
    Симпатии:
    5
    обновил файл http://tytmoe.uuuq.com/cheker.php но так и не работает:nezn:
     
Статус темы:
Закрыта.