Ergebnis 1 bis 2 von 2

Thema: Segmentation fault

  1. #1
    Azubi(ne)
    Registriert seit
    30.10.2008
    Beiträge
    81
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Segmentation fault

    Hallo,
    ich bastle gerade an einem Link Crawler rum und hab da ein Problem, denn das Ding schmiert irgendwann einfach mit dem Fehler:
    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:
    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:
    PHP-Code:
    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...");

    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?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Geändert von pApAnoAh (31.01.2009 um 17:10 Uhr)
    Der frühe Vogel fängt den Wurm,
    aber die zweite Maus bekommt den Käse.

  2. #2
    Forum Guru
    Registriert seit
    04.04.2005
    Beiträge
    4.139
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Segmentation fault

    SEGFAULTs sind immer eine schwierige Sache, eventuell bekommst du infos in der apache oder syslog.

    Verwende immer eine aktuelle PHP und Apache Versionen! Es werden immer wieder Probleme behobern die zu SEGFAULTs führen können.

    Wwenn wir nicht den kompletten Code haben können wir das auch schlecht beurteilen.

    Die einfachste Version den Fehler zu lokalisieren wäre hier nach jeder Aktion ein echo einzubauen.

    z.B.
    PHP-Code:
    function crawl()
    {
    echo 
    'start: crawl()';
        global 
    $links,$banned_links,$query_counter;
          echo 
    'global';
        if(
    count($links) > 0)
        {
        echo 
    'i > 0';
    ... 
    anhand des letzten Outputs kannst du herausfinden wo der Fehler sitzt.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •