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;
}
?>
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;
}
?>
Kommentar