Hallo,
ich bastle gerade an einem Link Crawler rum und hab da ein Problem, denn das Ding schmiert irgendwann einfach mit dem Fehler:
Zitat
Segmentation fault
ab und macht schluss^^
Der Link Crawler beschränkt sich auf eine Domain und ich hab die Stelle theoretisch schon gut eingekreist, hier mein Log:
ZitatAlles anzeigen
31.01.2009 15:36:01 - 1
31.01.2009 15:36:01 - 2
31.01.2009 15:36:02 - 3
31.01.2009 15:36:02 - got content...
31.01.2009 15:36:02 - 1
31.01.2009 15:36:02 - 2
31.01.2009 15:36:02 - 3
31.01.2009 15:36:02 - got content...
31.01.2009 15:36:02 - 1
31.01.2009 15:36:02 - 2
31.01.2009 15:36:02 - 3
Segmentation fault
und das passende Quellcode-Stück:
function crawl()
{
global $links,$banned_links,$query_counter;
if(count($links) > 0)
{
print_app("1"); // Siehe hier
$link = array_shift($links);
print_app("2"); // Siehe hier
q("UPDATE `crawler_links` SET `crawled` = '1' WHERE `link` = '".mysql_escape_string($link)."'");
print_app("3");
if($content = file_get_contents($link))
{
print_app("got content..."); // Siehe hier
get_links($content);
unset($content);
unset($link);
}
else
{
$banned_links[] = $link;
if($f = fopen("./crawler-".date("d-m-Y",time()).".log","a"))
fwrite($f,"~~~~~~~~~~~~~~~~~~~~~~~~ BANNED: ".$link."\n");
fclose($f);
unset($f);
}
crawl();
}
else
{
print_app("get new links...");
if(get_new_links() === true)
{
print_app("got_new_links...");
crawl();
}
else
{
print_app("result...");
print_result();
}
}
print_app("wtf...");
}
Alles anzeigen
Kann es sein, dass die Domain, die ich crawle, mich einfach irgendwann blockt und daher dieser Fehler kommt?
Aber wieso wird dann die Domain nicht als "banned" makiert?