Проверка сайтов на noffolow и noindex средствами пхп

Статус
В этой теме нельзя размещать новые ответы.

BIZON

o_O
Команда форума
Администратор
Модератор
Регистрация
31 Окт 2006
Сообщения
765
Реакции
2.155
  • Автор темы
  • Модер.
  • #1
В общем нашел вот такой код:
PHP:
<?php 

  //Искомый URL страницы 
  $url = "http://45.ru/forum/";   

  //Текст в котором мы ищем ссылку 
  $str = 'Т.е. ссылка на должна находится на странице ввиде:<noindex> TEXT TEXT<a href="http://45.ru/forum/" title="45.ru - юмор и развлечения" rel="nofollow">юмор и развлечения</a> TEXT TEXT</noindex>'; 
   
  $noindex_pattern = "|<noindex>.+?<a[\s]+href=\"".preg_quote($url)."\"[^>]+>.+?</a>.+?</noindex>|is"; 
  $nofollow_pattern = "|<a[^>]+href=\"".preg_quote($url)."\"[^>]+>.+?</a>|is"; 
   
  //Проверка на закл. в тегах noindex 
  if(preg_match($noindex_pattern, $str, $out)) 
  { 
    $error .= "Недопустимая ссылка: ссылка находится в тегах noindex.\n"; 
  }   
   
  //Проверка на атрибут nofollow 
  if(preg_match($nofollow_pattern, $str, $out)) 
  { 
    // Проверяем нет ли атрибута nofollow 
    if(strpos($out[0], "nofollow") !== false) 
      $error .= "Недопустимая ссылка: ссылка имеет параметр rel=nofollow.\n"; 
  }  
   
  //Если существует ошибка, выводим её 
  if($error) exit("<pre>".$error."</pre>"); 
   
?>

Как бы сделать, что б скрипт мог проверять и сортировать большие партии сайтов на наличие "noffolow и noindex"? (от 10к)
Но не конкретной страницы которая изначально к примеру импортируется, а нескольких..

пс
Если бесплатно никто не поможет, придется платить.. :D
 
чтото вроде этого:

PHP:
<?php
  //Искомый URL страницы  
  $url=file("./url.txt"); //url.txt содержит по урлу на строку
  
  $sites=file("./sites.txt"); //sites.txt содержит урлы проверяемых сайтов
  
  $log=fopen("./log.txt","w"); //log.txt - сюда пишем ошибки

  for($i=0;$i<sizeof($sites);$i++)
  {
	//Текст в котором мы ищем ссылку  
	$str =file_get_contents($sites[$i]); 
	$error=''; 
	for($j=0;$j<sizeof($url);$j++)
	{
		$noindex_pattern = "|<noindex>.+?<a[\s]+href=\"".preg_quote($url[$j])."\"[^>]+>.+?</a>.+?</noindex>|is";  
		$nofollow_pattern = "|<a[^>]+href=\"".preg_quote($url[$j])."\"[^>]+>.+?</a>|is";  
		//Проверка на закл. в тегах noindex  
		if(preg_match($noindex_pattern, $str, $out))  
		{  
			$error .= $sites[$i]." : ".$url[$j]." в noindex\r\n";
		}    
    
		//Проверка на атрибут nofollow  
		if(preg_match($nofollow_pattern, $str, $out))  
		{  
			// Проверяем нет ли атрибута nofollow  
			if(strpos($out[0], "nofollow") !== false)  
			$error .=$sites[$i]." : ".$url[$j]." в nofollow\r\n";
		}   
	}    
	//Если существует ошибка, выводим её  
	if($error!='') fwrite($log,$error);
  }
  fclose($log);
    
?>
 
Если есть какие-либо ограничения на сервере, например время выполнения скрипта, объем занимаемой памяти итд, стоит воспользоваться другим методом, основанным на очереди.
Пример: есть скрипт, запускающийся кроном каждую минуту. За один запуск он проверяет не все сайты, а фиксированное число, скажем 100. Берет сайты из очереди -- базы или файла. И есть другой скрипт, который управляет очередью.
 
кстати про это я забыл :)
на случай ограничения времени работы скрипта надо в самое начало написать
PHP:
<?
@ignore_user_abort(1);
@ini_set('max_execution_time',0);
@set_time_limit(0);
?>

на подавляющем большинстве хостингов скрипт отработает до конца, даже если юзер закроет браузер.
 
Для больших объемов, лучше переписать этот код на perl и задействовать многопоточность.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху