[Ищу] Скрипт проверки сайта на доступность.

Тема в разделе "SEO Скрипты", создана пользователем extrimportal, 2 янв 2009.

Статус темы:
Закрыта.
  1. extrimportal

    extrimportal

    Регистр.:
    28 ноя 2008
    Сообщения:
    549
    Симпатии:
    70
    В смысле нужен скрипт проверки сайта на 404 и остальные. Тоесть если есть база сайтов он чекает их и работающие бросает в отдельный тхт файл. Просто олсабмиттер много трафа жрет а так проверить было бы намного лучше.
     
  2. Wentix

    Wentix Создатель

    Регистр.:
    26 авг 2008
    Сообщения:
    29
    Симпатии:
    14
    Лови:

    Код:
    <?php
    
    error_reporting('0');
    set_time_limit('0');
    
    $lf             = 'links.txt';
    $not_found_file = 'links.404.txt';
    $forbidden_file = 'links.403.txt';
    $good_file      = 'links.good.txt';
    $error_file     = 'links.error.txt';
    
    $file_arr = file($lf);
    
    $lc = count($file_arr);
    
    for($i = 0;$i <= $lc;$i++){
    	$link = trim($file_arr[$i]);
    
    	$con = curl_init($link);
    	curl_setopt($con, CURLOPT_RETURNTRANSFER, '1');
    	curl_setopt($con, CURLOPT_HEADER, '1');
    	curl_setopt($con, CURLOPT_REFERER, 'http://www.google.com');
    	curl_setopt($con, CURLOPT_USERAGENT, 'Opera/10.00 (Windows NT 5.1; U; en) Presto/2.2.0');
    	$ans = curl_exec($con);
    	curl_close($con);
    
    	if(strpos($ans, '404 Not Found')){
    		$fp = fopen($not_found_file, 'a');
    		fwrite($fp, $link."\r\n");
    		fclose($fp);
    	} elseif(strpos($ans, '403 Forbidden')){
    		$fp = fopen($forbidden_file, 'a');
    		fwrite($fp, $link."\r\n");
    		fclose($fp);
    	} elseif(strpos($ans, '200 OK')){
    		$fp = fopen($good_file, 'a');
    		fwrite($fp, $link."\r\n");
    		fclose($fp);
    	}  else {
    		$fp = fopen($error_file, 'a');
    		fwrite($fp, $link."\r\n");
    		fclose($fp);
    	}
    
    }
    
    ?>
    

    Для работы нужен cURL на хостинге.
     
  3. extrimportal

    extrimportal

    Регистр.:
    28 ноя 2008
    Сообщения:
    549
    Симпатии:
    70
    А с каким количеством тоесть размером файла links.txt сможет работать скрипт. А то у меня с файла на 90 кб обработал только 4 кб.
     
  4. Wentix

    Wentix Создатель

    Регистр.:
    26 авг 2008
    Сообщения:
    29
    Симпатии:
    14
    Ограничений нет.
    Попробуй добавить задержку в 1сек после каждого коннекта к урлу.

    Код:
    <?php
    
    error_reporting('0');
    set_time_limit('0');
    
    $lf             = 'links.txt';
    $not_found_file = 'links.404.txt';
    $forbidden_file = 'links.403.txt';
    $good_file      = 'links.good.txt';
    $error_file     = 'links.error.txt';
    
    $file_arr = file($lf);
    
    $lc = count($file_arr);
    
    for($i = 0;$i <= $lc;$i++){
    	$link = trim($file_arr[$i]);
    
    	$con = curl_init($link);
    	curl_setopt($con, CURLOPT_RETURNTRANSFER, '1');
    	curl_setopt($con, CURLOPT_HEADER, '1');
    	curl_setopt($con, CURLOPT_TIMEOUT, '8');
    	curl_setopt($con, CURLOPT_REFERER, 'http://www.google.com');
    	curl_setopt($con, CURLOPT_USERAGENT, 'Opera/10.00 (Windows NT 5.1; U; en) Presto/2.2.0');
    	$ans = curl_exec($con);
    	curl_close($con);
    
    	if(strpos($ans, '404 Not Found')){
    		$fp = fopen($not_found_file, 'a');
    		fwrite($fp, $link."\r\n");
    		fclose($fp);
    	} elseif(strpos($ans, '403 Forbidden')){
    		$fp = fopen($forbidden_file, 'a');
    		fwrite($fp, $link."\r\n");
    		fclose($fp);
    	} elseif(strpos($ans, '200 OK')){
    		$fp = fopen($good_file, 'a');
    		fwrite($fp, $link."\r\n");
    		fclose($fp);
    	}  else {
    		$fp = fopen($error_file, 'a');
    		fwrite($fp, $link."\r\n");
    		fclose($fp);
    	}
    
    	sleep('1');
    }
    
    ?>
    
     
  5. extrimportal

    extrimportal

    Регистр.:
    28 ноя 2008
    Сообщения:
    549
    Симпатии:
    70
    Большой респект так как очень поможет. Еще если не трудно (сам не знаю в пхп на уровни - вырезать ненужный кусок...) доработайте многопоточность задал маленькую базу в 2000 урл так он за 4 часа даже 500 не обработал а что делать с базой у 80 000? Так что если не трудно буду очень благодарен.:thenks:
     
  6. Wentix

    Wentix Создатель

    Регистр.:
    26 авг 2008
    Сообщения:
    29
    Симпатии:
    14
    Многопоточный:

    Код:
    <?php
    
    error_reporting('0');
    set_time_limit('0');
    
    $lf             = 'links.txt';
    $not_found_file = 'links.404.txt';
    $forbidden_file = 'links.403.txt';
    $good_file      = 'links.good.txt';
    $error_file     = 'links.error.txt';
    
    
    $data = explode("\r\n", file_get_contents($lf));
    $lc = count($data);
    $curly  = array();
    $result = array();
    $mh = curl_multi_init();
    
    foreach($data as $id => $d){
    	$curly[$id] = curl_init();
    
    	curl_setopt($curly[$id], CURLOPT_URL, $d);
    	curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, '1');
    	curl_setopt($curly[$id], CURLOPT_HEADER, '1');
    	curl_setopt($curly[$id], CURLOPT_TIMEOUT, '4');
    	curl_setopt($curly[$id], CURLOPT_REFERER, 'http://www.google.com');
    	curl_setopt($curly[$id], CURLOPT_USERAGENT, 'Opera/10.00 (Windows NT 5.1; U; en) Presto/2.2.0');
    
    	curl_multi_add_handle($mh, $curly[$id]);
    }
    
    $running = null;
    
    do {
    	curl_multi_exec($mh, $running);
    } while($running > 0);
    
    foreach($curly as $id => $c) {
    	$result[$id] = curl_multi_getcontent($c);
    	curl_multi_remove_handle($mh, $c);
    }
    
    for($i=0;$i < $lc;$i++){
    	if(strpos($result[$i], '404 Not Found')){
    		$fp = fopen($not_found_file, 'a');
    		fwrite($fp, $data[$i]."\r\n");
    		fclose($fp);
    	} elseif(strpos($result[$i], '403 Forbidden')){
    		$fp = fopen($forbidden_file, 'a');
    		fwrite($fp, $data[$i]."\r\n");
    		fclose($fp);
    	} elseif(strpos($result[$i], '200 OK')){
    		$fp = fopen($good_file, 'a');
    		fwrite($fp, $data[$i]."\r\n");
    		fclose($fp);
    	}  else {
    		$fp = fopen($error_file, 'a');
    		fwrite($fp, $data[$i]."\r\n");
    		fclose($fp);
    	}
    }
    
    ?>
    
     
    extrimportal нравится это.
  7. extrimportal

    extrimportal

    Регистр.:
    28 ноя 2008
    Сообщения:
    549
    Симпатии:
    70
    С последней версией все сайты падают в 404 :nezn:
     
Статус темы:
Закрыта.