Массовая проверка ТИЦ и PR

pr и тиц сайтаРазмышляя о том в каких белых каталогах зарегистрироваться, на каких площадках покупать ссылки, какие блоги комментировать или анализируя сайты конкурентов, Вы сталкиваетесь с необходимостью узнать тиц и pr не одного, а целого списка сайтов. Для таких целей существуют скрипты массового определения пузомерок. Как же они создаются и по каким принципам работают? Это будет темой сегодняшнего поста.

Признаюсь, в сети существует немало реализаций этой задачи, я решил для создать утилиту для личного пользования и поделиться с Вами нюансами ее реализации.

Цель:

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

Проверка ТИЦ и PR

Детали реализации:

Утилита состоит из четырех файлов:
index.php – так называемый фронт-офис, содержит элемент <textarea> (id=”sites_list”) куда вводятся url адреса проверяемых сайтов. После нажатия кнопки “Узнать ТИЦ и PR” (id=”process”) выполняется множество ajax запросов к бэк-офисной части и результат отображается в слое ниже (id=”display_results_div”).
tcy_pr.php – бэк-офис, принимает поступающие запросы и возвращает пузомерки.
tcy_pr.class.php – класс, взятый с http://php-developer.ru/ , для получения тиц и pr, его использует tcy_pr.php. Для работы необходима библиотека CURL, которая должна входить в дистрибутив php на хостинге.
styles.css – файл стилей, в нем описаны свойства слоев, используется фронт-офисом index.php

Рассмотрим реализацию фронт-офисной части поподробнее, а точнее той части, которая занимается взаимодействием с сервером по технологии ajax. Вот она:

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
29
30
31
32
33
34
35
36
37
38
39
<script type="text/javascript">
$(document).ready(function()
{
//Создадим функцию-обработчик, которая вызовется при нажатии на ссылку "Узнать ТИЦ и PR" (у нее id="process")
$('#process').click(function()
	{
	//очистим слой, в который будет выводится результат
	$("#display_results_div").html('');
	//считаем все строки элемента textarea (его id="sites_list") в массив sites
	var sites = $('#sites_list').val().split(/\n/);
	//длину массива в sites_count
	var sites_count = sites.length;
	//вспомогательная итерационная переменная
	var i;
 
	for (i=0;i<sites_count;i++)
		{
		//заносим в слой (его id="display_results_div") отображения результатов слои с именами сайтов и слои для их ТИЦ и PR (пока там размещаем анимированную картинку, сигнализирующую о начале процесса)
		$("#display_results_div").append("<div class='site_name'>"+sites[i]+"</div> <div class='pr' id='l_pr_"+i+"'><img src='ajax_loading.gif'></div> <div class='tcy' id='l_tcy_"+i+"'><img src='ajax_loading.gif'></div><div class='clear'></div>");
		}
 
	for (i=0;i<sites_count;i++)
		{
		//в каждом ajax-запросе отсылает две переменные site - имя сайта и его порядковый номер i 
		$.post(
			"tcy_pr.php", 
			{'site': sites[i], 'i': i}, 
			function(data)
				{
				//выводим полученные от сервера ТИЦ и PR в соответствующих слоях. Внимание - переданная ранее на сервер переменная i помогает идентифицировать сайт и соответствующий ему слой.
				var res = data.split(' ');
				$("#l_pr_"+(res[0])).html(res[1]);
				$("#l_tcy_"+(res[0])).html(res[2]);
				}
		       );
		}
	});
});
</script>

Скрипт, обрабатывающий запросы на сервере и возвращающий пузомерки, будет примерно следующим:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
//подключаем класс для определения тиц и pr
include ("tcy_pr.class.php");
//создаем экземпляр класса
$tcy_pr = new TCY_PR();
 
if ($_POST["site"] == "") 	{ exit();	}
//проверки на корректность данных... кстати можно добавить и свои
if (strtolower(substr($_POST["site"],0,7)) != "http://" )
	{$_POST["site"]="http://".$_POST["site"]; }
$_POST["site"]=htmlspecialchars(trim(strip_tags(stripslashes($_POST["site"]))));
 
//вызов методов непосредственно определения тиц и pr
$pr = $tcy_pr->check_pr($_POST["site"]);
$tcy = $tcy_pr->check_tcy($_POST["site"]);
 
if ($pr == "") {$pr="0";}
if ($tcy == "") {$tcy="0";}
 
//выводим результат
echo($_POST["i"]." ".$pr." ".$tcy);
?>

Описание самого класса (tcy_pr.class.php) приводить не буду, с ним вы можете ознакомиться, скачав скрипт по ссылке в конце поста. Отмечу, что работу утилиты можно сделать “еще более асинхронной” :-) , ведь на данный момент при выполнении каждого запроса к серверу по каждому сайту определяются последовательно ТИЦ и PR, а можно отправлять по каждой пузомерке отдельный запрос! Это я оставляю для домашнего задания. :-)

Скачать утилиту массовой проверки ТИЦ и PR с rapidgator.net
Утилита массовой проверки ТИЦ и PR в действии

P.S. Как видите оказалось не так сложно было реализовать асинхронное взаимодействие, ведь на самом деле библиотека JQuery работает по-умолчанию в этом режиме. Для лучшего понимания этих процессов советую ознакомиться со статьей jQuery и Ajax: запросы. У меня на сегодня все.

Комментарии:

  1. Сергей

    Можно было и не внедрять ajax, эх было бы у меня свободное время… так хочется покодить :)

  2. Юрий

    Спасибо большое. Буду использовать