Массовая проверка ТИЦ и PR
Размышляя о том в каких белых каталогах зарегистрироваться, на каких площадках покупать ссылки, какие блоги комментировать или анализируя сайты конкурентов, Вы сталкиваетесь с необходимостью узнать тиц и pr не одного, а целого списка сайтов. Для таких целей существуют скрипты массового определения пузомерок. Как же они создаются и по каким принципам работают? Это будет темой сегодняшнего поста.
Признаюсь, в сети существует немало реализаций этой задачи, я решил для создать утилиту для личного пользования и поделиться с Вами нюансами ее реализации.
Цель:
Реализовать утилиту на php позволяющую определить тиц и 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: запросы. У меня на сегодня все.
Можно было и не внедрять ajax, эх было бы у меня свободное время… так хочется покодить
Спасибо большое. Буду использовать