Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Automatisch PageRank ermitteln [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Automatisch PageRank ermitteln


 
si.baer
09-11-2007, 19:58 
 
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;
}

?>

 
Xer0
09-11-2007, 20:23 
 
Fehlerausgabe etc?

 
si.baer
09-11-2007, 20:28 
 
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.

 
TobiaZ
09-11-2007, 20:34 
 
Testausgaben machst du natürlich auch nicht?

 
si.baer
09-11-2007, 20:38 
 
Testausgaben? ;)

 
TobiaZ
09-11-2007, 20:38 
 
*move* nach Projekthilfe...

 
Xer0
10-11-2007, 13:16 
 
Original geschrieben von si.baer
Testausgaben? ;)

print_r() zum Beispiel ;)
Relevante Variableninhalte ausgeben und auswerten!

 
TobiaZ
10-11-2007, 13:17 
 
Oder ein popeliges echo reicht meist schon aus... :rolleyes:

 
Xer0
10-11-2007, 13:19 
 
Jo Tobiaz, aber ist das nicht normales debuggen wenn ein Script nicht läuft? :D

 
onemorenerd
10-11-2007, 13:39 
 
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.

 
si.baer
10-11-2007, 13:39 
 
kann mir jemand dabei helfen?

 
TobiaZ
10-11-2007, 13:51 
 
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.

 
si.baer
10-11-2007, 13:55 
 
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...

 
TobiaZ
10-11-2007, 14:03 
 
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...


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:08 Uhr.