Automatisch PageRank ermitteln

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Automatisch PageRank ermitteln

    Für mein Hobby Projekt habe ich die Funktion eingefügt, automatishc den Pagerank von Links zu ermitteln. Allerdings funktioniert die Funktion (mittels cronjob) nicht. Der cronjob ist dabei nicht das Problem. Kann jemand den Fehler entdecken?

    <?php
    define('GOOGLE_MAGIC',0xE6359A60);
    define('LOAD',TRUE);
    require_once('/lib/config.php');
    require_once(/lib/db/db.php');

    $errMsg = ''; $errFlag = 0;
    $db =& new db();
    $dbCon = $db->dbConnect($cfgArr['db']['dbHost'],$cfgArr['db']['dbUser'],$cfgArr['db']['dbPass'],$cfgArr['db']['dbName']);

    if($dbCon)
    {
    $query1 = "select uwId,url from uWebInfo order by uwId";
    $result1 = $db->dbQuery($query1);
    if($result1 && ($db->dbNumRows($result1)>0))
    {
    while($row1 = $db->dbFetchArray($result1))
    {
    $urlToFind = $row1['url'];

    // http://www.example.com/ - Checksum: 6540747202
    $url = 'info:'.$urlToFind;
    $ch = GoogleCH(strord($url));
    //printf("ch:\t6%u\n",$ch);
    $url = 'http://www.google.com/search?client=navclient-auto&ch=6'.$ch.'&features=Rank&q=info:'.$urlToFind;
    $rankInfo = @file_get_contents($url);
    $rankArr = explode(':',$rankInfo);

    $googleRank = (isset($rankArr[2]))?$rankArr[2]:0;
    $query2 = "update uWebInfo set googleRank=$googleRank where uwId=$row1[uwId]";
    $result2 = $db->dbQuery($query2);
    if(!$result2 || ($db->dbAffectedRows()<0))
    {
    error_log($query2.' - '.$db->dbError().NL,3,'log/google_rating_update.log');
    }/**/
    }
    error_log(date('Y-M-d h:i:s').NL,3,'log/google_rating_done_time.log');
    }
    }
    else
    {
    error_log(date('Y-M-d h:i:s').' - '.$db->dbError().NL,3,'log/google_rating_db_error.log');
    }



    //unsigned shift right
    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 ^= (zeroFill($c,13));
    $b -= $c; $b -= $a; $b ^= ($a<<8);
    $c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
    $a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
    $b -= $c; $b -= $a; $b ^= ($a<<16);
    $c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
    $a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
    $b -= $c; $b -= $a; $b ^= ($a<<10);
    $c -= $a; $c -= $b; $c ^= (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 = mix($a,$b,$c);
    $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
    $k += 12;
    $len -= 12;
    }

    $c += $length;
    switch($len) /* all the case statements fall through */
    {
    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]);
    /* case 0: nothing left to add */
    }
    $mix = mix($a,$b,$c);
    /*-------------------------------------------- report the result */
    return $mix[2];
    }

    //converts a string into an array of integers containing the numeric value of the char
    function strord($string) {
    for($i=0;$i<strlen($string);$i++) {
    $result[$i] = ord($string{$i});
    }
    return $result;
    }

    ?>

  • #2
    Fehlerausgabe etc?

    Kommentar


    • #3
      Fehlerausgabe erhalte ich keine, sowohl wenn das Skript als cronjob läuft als auch wenn ich das sktipt als url aufrufe.
      Allerdings werden die Werte nicht in die mysql datenbank eingetragen.

      Kommentar


      • #4
        Testausgaben machst du natürlich auch nicht?

        Kommentar


        • #5
          Testausgaben?

          Kommentar


          • #6
            *move* nach Projekthilfe...

            Kommentar


            • #7
              Original geschrieben von si.baer
              Testausgaben?
              print_r() zum Beispiel
              Relevante Variableninhalte ausgeben und auswerten!
              Zuletzt geändert von Xer0; 10.11.2007, 13:18.

              Kommentar


              • #8
                Oder ein popeliges echo reicht meist schon aus...

                Kommentar


                • #9
                  Jo Tobiaz, aber ist das nicht normales debuggen wenn ein Script nicht läuft?

                  Kommentar


                  • #10
                    Ich sehe schon einen Unterschied zw. Debugging und Testausgaben.
                    Ist hier aber unwichtig.
                    Wenn es hilft, den Fehlern auf die Spur zu kommen, dann ist es richtig. Egal wie man es nennt oder was man genau gemacht hat.
                    Zuletzt geändert von onemorenerd; 10.11.2007, 13:43.

                    Kommentar


                    • #11
                      kann mir jemand dabei helfen?

                      Kommentar


                      • #12
                        Du hast also nicht ansatzweise verstanden, was das Script macht, oder? Das wäre nämlich der erste Schritt.

                        Und wenn du das getan hast, kannst du ganz einfach mal die Rückgabe der HTTP-Request ausgeben. Das wird mit sicherheit weitere Infos liefern.

                        Kommentar


                        • #13
                          doch, was das skript macht habe ich ansatzweise schon verstanden.
                          ich glaube, der fehler liegt in der zeile

                          http://www.google.com/search?client=navclient-auto&ch=6'.$ch.'&features=Rank&q=info:'url'

                          google nennt uns scammer, die wir den pagerank ermittel wollen...

                          Kommentar


                          • #14
                            Keine Ahnung, was Google (bzw DU) unter einem scammer versteht.

                            Aber lies dir die AGB durch, dann weißt du bescheid. Ich denke das ganze bedarf dann keiner weiteren Klärung mehr...

                            Kommentar

                            Lädt...
                            X