Аврора Веб в Санкт-Петербурге  
Санкт-Петербург, ул. Магнитогорская, 11
тел. +7 (812) 331-27-57
Создание сайта, продвижение сайта.
на главнуюкарта сайтанаписать письмо

скрипт для PageRank

 
Как узнать PageRank или особенности алгоритма на PHP.
Всегда мечтал узнать, как получить PageRank, минуя тулбар от Google, что бы был скрипт, позволяющий получить PR в автоматическом режиме. Полезно, знаете ли, собирать такие сведения о сайтах, особенно когда речь идет о продвижении.
Поиск привел на страничку со статьей "AJAX скрипт для определения Google Pagerank" (http://allajax.ru/script/ajax-skript-dlya-opredeleniya-google-pagerank). Не очень понятно, зачем нужен AJAX, если основная вычисление PageRank происходит в скрипте pagerank.php, что собственно нам и нужно. Скачиваем архив и получаем заветный файл.
Из кода видно, что остаточно сформировать строчку вида:
http://www.google.com/search?client=navclient-auto&ch=62067077616&features=Rank&q=info%3Ahttp%3A%2F%2Fwww.auweb.ru
и вы получите страницу, на которой отразится PR, примерно в таком виде:
Основной секрет данного скрипта - это формирование последовательности (контрольной суммы) ch=62067077616. Данная последовательность вычисляется по адресу сайта, если контрольная сумма вычислена неправильно, то google выдаст красочную страницу, на которой, в мягкой форме, сообщит, что о вас думает.
Не будем вдаваться в особенности алгоритма, отметим только одну маленькую особенность, этот код работает только на 32 разрядных операционных системах, а на 64 разрядных выдает неправильную последовательность, что приводит к тому, что Google отказывается показывать значение PR.
Причина проста. Переполнение переменной типа integer в версиях PHP для ОС с разной разрядностью происходит по-разному.
Немного теории.
Тип integer занимает 32 бита, в десятичном представлении число может меняться от -2147483648 до 2147483647.
Что бы понять, как происходит переполнение, представим максимальное число 2147483647 в бинарном виде и прибавим 1:
01111111111111111111111111111111
+
00000000000000000000000000000001
=
10000000000000000000000000000000
А это как раз минимальное число (-2147483648), в бинарном виде старший бит = 1 означает, что число отрицательное. Т.е. если переменная занимает 32 бита и переполнение не контролируется, то мы получим циклическое представление числа, в котором минимальное и максимальное значение отличаются на 1. т.е. отрицательное число меньше (-2147483648) "становиться" положительным.
Как это работает в PHP.
Если речь идет о математических действиях (+-*/) то при выходе числа из диапазона значений integer переменная автоматически меняет свой тип на double (размер перемнной 64 бит), но когда речь идет о логических операциях например ^ (Xor) происходит преобразование double к integer.
Отличие преобразования в целое в разных версиях PHP.
Если число меньше -2147483648, то:
  • в PHP для 32-разрядной версии ОС, преобразование происходит циклическим образом, т.е. число становится положительным.
  • в PHP для 64-разрядной версии ОС, все числа меньше -2147483648, становятся равными -2147483648.
Для тех, кто заинтересуется темой более подробно, есть ряд статей:
Исправление кода.
В исходной программе при использовании логических функций преобразование происходит не явно, нам же придется написать функцию, по сути - это подобие функции intval, но она работает одинаково как в 32 так и 64 разрядных версиях ОС.
function intval_like32()
{
$i_min=-2147483648;
if(intval($i_min-1)!=$i_min) // проверка на то каким образом происходит округление
{
// echo "32 bit";
$iv=intval($iv); //если версия 32 bit то ничего не делаем.
}
else
{
// echo "64 bit";
if($iv!=intval($iv))
{
if($iv<0) //если версия 64 bit и число отрицательное совершаем преобразование
{
$iv=$iv-intval($iv)*2;
}
else $iv=intval($iv); //если версия 64 bit и число положительное ничего не делаем
}
}
return $iv;
}
Добавляем функцию, исправляем код, окончательный вариант можете скачать здесь, пароль к архиву 12345.
Размещаем скрипт на сервере, в браузере пишем строчку:
..pr.php?url=http://www.auweb.ru
Копирайт
автор: Auweb_dev
© ЗАО `Аврора Веб` - При полном или частичном копировании материала, прямая ссылка на сайт www.auweb.ru обязательна.
о компании
новости
услуги
портфолио
статьи и обзоры
контакты
 
18-01-12
Обновлена английская версия сайта bartov.ru
14-03-11
Добавлена возможность проверки усвоения знаний на сайте a-algoritm.spb.ru
22-01-11
Добавлена возможность сохранения статей на сайте a-algoritm.spb.ru
15-12-10
Разработан новый дизайн сайта для ЗАО "ЗМС Знамя Труда"
22-11-10
Запущена первая версия плагина для изучения языка на сайте a-algoritm.spb.ru
все новости >>
 
О компании| Новости| Услуги| Портфолио| Контакты| Статьи| Ссылки| Каталог товаров
Все права принадлежат
ТМ "Аврора Веб" © 2005-2017