[ Šahbaz @ 23.12.2007. 01:52 ] @
Pozdrav,

Naime imam problem sa PageRank klasom koju sam preuzeo sa PHPclasses.
U lokalu mi sve radi kako treba samo sto vrace 1 kad ne bi trebalo (ne korektno ime domena).

Na mom serveru (hostgator) imam problema jer mi konstantno vrace 1 za sve sajtove.
Vjerovatno je u pitanju neki problem sa php konfiguracijom pa me zanima da li bi neko mogao tacno da mi kaze u cemu je problem?

Sta je VirtualDirectory support ? (posto ovo nije dozvoljeno na mom serveru).
Isto tako me zanima da li znate neku klasu ili skriptu koja prvjerava PageRank broj indexiranix linkova i slicno...

Ps.
Php fajl sam prikacio uz poruku pa ako nekog zanima neka proba.
[ Miroslav Ćurčić @ 23.12.2007. 16:54 ] @
Google vraća 1 onda kada "heš" unutar komande ne odgovara ostalim parametrima poziva.
Dva su moguća razloga zašto negde radi a negde ne, ili ti je IP banovan zbog previše saobraćaja ili ti matematičke funkcije stvore drugačiji heš (ovo se meni desilo).

Ne znam koju si varijantu uzeo sa phpclasses, ali sve koriste sličan algoritam za računanje heša.
Ja sam "popravio" ovu: http://www.phpclasses.org/discuss/package/2682/thread/2/page/3/
[ Šahbaz @ 23.12.2007. 17:21 ] @
Nije mi bas najasnije to ali i sa ovim kodom na mom serveru nema napretka, i dalje vraca 1 za sve urlove.
Kako da saznam da li mi je IP banovan!?

I da li moze pojasnjenje sta je VirtualDirectory!?

Takodje me zanima da li se pomocu google api-a moze dobiti page rank i da li bi u tom slucaju sigurno radio i na mom serveru!?

Poz i hvala.
[ Miroslav Ćurčić @ 23.12.2007. 18:57 ] @
Probaj 'vako:
tamo gde ti je komentar "// let's get ranking" dodaj novi red:
die($querystring);
Tako ćeš videti kako ti je heš formiran.
Podigni to na server, pokreni pa pogledaj šta ti tamo napiše, ako se razlikuju onda imaš problem s matematikom na serveru.

Ne znam šta je VirtualDirectory. GoogleAPI? Pa može, ali i ovo mora da radi.

Tip: ugasi keširanje rezultata dok sve ovo isprobavaš.
[ Predrag Gajic @ 23.12.2007. 19:01 ] @
Pokušaj sa
pagerank.php
Code:
<?php 
define('GOOGLE_MAGIC', 0xE6359A60); 
class pageRank{
var $pr; 
function zeroFill($a, $b){ 
$z = hexdec(80000000);
  if ($z & $a){ 
   $a = ($a>>1); 
   $a &= (~$z); 
   $a |= 0x40000000; 
   $a = ($a>>($b-1)); 
  }else{ 
   $a = ($a>>$b); 
  } 
return $a; 


function mix($a,$b,$c) { 
   $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,13));
   $b -= $c; $b -= $a; $b ^= ($a<<8);
   $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,13));
   $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,12));
   $b -= $c; $b -= $a; $b ^= ($a<<16);
   $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,5));
   $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,3));
   $b -= $c; $b -= $a; $b ^= ($a<<10);
   $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,15));
   return array($a,$b,$c); 


function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) { 
  if(is_null($length)) { 
   $length = sizeof($url); 
  } 
  $a = $b = 0x9E3779B9;
  $c = $init;
  $k = 0;
  $len = $length;
  while($len >= 12) { 
   $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
   $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
   $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
   $mix = $this->mix($a,$b,$c);
   $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
   $k += 12;
   $len -= 12; 
  }
  $c += $length;
  switch($len){ 
   case 11: $c+=($url[$k+10]<<24);
   case 10: $c+=($url[$k+9]<<16);
   case 9 : $c+=($url[$k+8]<<8);
   /* the first byte of c is reserved for the length */
   case 8 : $b+=($url[$k+7]<<24);
   case 7 : $b+=($url[$k+6]<<16);
   case 6 : $b+=($url[$k+5]<<8);
   case 5 : $b+=($url[$k+4]);
   case 4 : $a+=($url[$k+3]<<24);
   case 3 : $a+=($url[$k+2]<<16);
   case 2 : $a+=($url[$k+1]<<8);
   case 1 : $a+=($url[$k+0]); 
  } 
  $mix = $this->mix($a,$b,$c); 
/* report the result */ 
return $mix[2]; 




function strord($string) { 
  for($i=0;$i<strlen($string);$i++) { 
   $result[$i] = ord($string{$i}); 
  } 
return $result; 


function printrank($url){
  $ch = "6".$this->GoogleCH($this->strord("info:" . $url)); 
  
  $fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
  if (!$fp) {
     echo "$errstr ($errno)<br />\n";
  } else {
     $out = "GET /search?client=navclient-auto&ch=" . $ch .  "&features=Rank&q=info:" . $url . " HTTP/1.1\r\n";
     $out .= "Host: www.google.com\r\n";
     $out .= "Connection: Close\r\n\r\n"; 
     fwrite($fp, $out);
     while (!feof($fp)) {
       $data = fgets($fp, 128);
       $pos = strpos($data, "Rank_");
         if($pos === false){
         }else{
           $pagerank = substr($data, $pos + 9);
           $this->pr_image($pagerank);
         }
     }
     fclose($fp); 
  }
}

function pr_image($pagerank){

  if($pagerank == 0){
   $this->pr = "0";
   }elseif($pagerank == 1){
   $this->pr = "1";
   }elseif($pagerank == 2){
   $this->pr = "2";
   }elseif($pagerank == 3){
   $this->pr = "3";
   }elseif($pagerank == 4){
   $this->pr = "4";
   }elseif($pagerank == 5){
   $this->pr = "5";
   }elseif($pagerank == 6){
   $this->pr = "6";
   }elseif($pagerank == 7){
   $this->pr = "7";
   }elseif($pagerank == 8){
   $this->pr = "8";
   }elseif($pagerank == 9){
   $this->pr = "9";
   }else{
   $this->pr = "10";
  }
}
function get_pr(){
  return $this->pr;
}
}
?> 


Code:
include("pagerank.php");
$gpr = new pageRank();
$gpr->printrank("http://www.google.com");
//display image
$pr=$gpr->get_pr();
echo "$pr-";
[ Šahbaz @ 23.12.2007. 20:38 ] @
@mrVeliki

Razlikuju se:

Server:
client=navclient-auto&ch=6970774653&features=Rank&q=info%3Ahttp%3A%2F%2Fwww.google.com

Localhost:
client=navclient-auto&ch=63513778613&features=Rank&q=info%3Ahttp%3A%2F%2Fwww.google.com

@Predrag Gajic

Hvala za kod ali to se svodi na klasu koju vec imam tako da u lokalu radi Ok a na serveru Nista!
[ Miroslav Ćurčić @ 23.12.2007. 21:19 ] @
Ova verzija radi kod mene na serveru.
[ Šahbaz @ 23.12.2007. 22:09 ] @
Hvala ali kod HostGatora i dalje vrace 1!

Sta mislis da li bi koriscenjem Google API-a prevazisao problem na serveru!?