17. august 2006 - 16:10Der er
10 kommentarer og 1 løsning
RSS-parser hjælp..
Hejsa,
Jeg benytter en RSS-parser, men synes ofte at der opstår fejl i de feeds jeg prøver at bruge. De forskellige feeds, er i et array, men kan det lade sig gøre at springe et feed over, hvis der ikke kan oprettes forbindelse til dette, eller hvis der opstår en fejl i feedet?
$feeds = Array( "feed1", "feed2" "etc.."); for($i = 0; $i < count($feeds); $i++) { $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); $fp = fopen("$feeds[$i]","r") or die("Error reading RSS data."); while ($data = fread($fp, 4096)) xml_parse($xml_parser, $data, feof($fp)) or die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); } fclose($fp); xml_parser_free($xml_parser);
Håber at nogle kan være behjælpelige. Skal jeg copy-paste hele koden?
Kan se det måske ikke blev forklaret helt tydeligt. Jeg har i alt 10-15 forskellige feeds, som jeg bruger, men hvis bare ét feed går død, så går det udover resten og så står jeg med ingenting - hvilket er ret irriterende.
Kan det lade sig gøre med et par modifikationer, at ændrer lidt således, at et dødt eller fejlet feed ignoreres og der fortsættes med de resterende "raske" feeds?
nielle > Det ser umiddelbart ud til at virke. Jeg har testet det med et feed, der ikke eksisterede og der fortsatte den.
Hvis du er sikker i din sag, så smid endelig et svar. Jeg afventer dog lige et par timer for at se om der opstår nogle problemer. MANGE TAK for løsningen, hvis det holder er det helt fantastisk!
Desuden har jeg flyttet lidt rundt på dine linjer sådan at koden giver mere fornuft generelt:
1) F.eks. bliver fclose($fp) kun kaldt hvis det gik godt at åbne feedet, 2) xml_parser_free($xml_parser) er flyttet indenfor i løkken sådan at der er et kald til xml_parser_free() for hvert kald til xml_parser_create(), 3) og fopen("$feeds[$i]","r") er ændret til fopen($feeds[$i],"r"). De ekstre "-tegn er nemligt totalt overflødige og gør kun applikationen (lidt) tungere.
Jo, jeg er ret sikker på at det var det der skulle til. :^)
Men, jeg venter nu gerne til at du siger god for den.
Måske er det nok at droppe ... or die() ... delen i denne:
xml_parse($xml_parser, $data, feof($fp)) or die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.