Optimering af RSS-parser
Hej eksperter,Jeg har følgende RSS-Parser, som indeholder en del feeds. Derfor kunne jeg godt tænke mig at høre om det er muligt at optimere scriptet. Her kommer det lige:
<html>
<head>
<title> Opdaterer nyhedslisten... </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="refresh" content="60; URL=http://www.rssparser.dk/">
</head>
<body>
<h2>Opdaterer nyhedslisten...</h2>
<dl>
<?php
MYSQL-CONNECT
$insideitem = false;
$tag = "";
$title = "";
$description = "";
$link = "";
function startElement($parser, $name, $attrs) {
global $insideitem, $tag, $title, $description, $link;
if ($insideitem) {
$tag = $name;
} elseif ($name == "ITEM") {
$insideitem = true;
}
}
function endElement($parser, $name) {
global $insideitem, $tag, $title, $category, $description, $link;
$link = str_replace('&', '&', $link);
$n_url = mysql_query("SELECT id FROM rss_news WHERE url = '$link'");
if (mysql_num_rows($n_url) > 0) { } else {
$published = date(U);
if ($name == "ITEM") {
if ( preg_match( "§^http://www.feed1.dk/§", $link )) {
printf("",
trim($link),addslashes(trim($title)));
printf("",addslashes(trim($description)));
$insert = mysql_query("INSERT INTO rss_news VALUES ('$title', '$description', '$link', 'Feed1', '$published', '0', '0')");
} if ( preg_match( "§^ttp://www.feed1.dk/§", $link )) {
printf("",
trim($link),addslashes(trim($title)));
printf("",addslashes(trim($description)));
$insert = mysql_query("INSERT INTO rss_news VALUES ('$title', '$description', '$link', 'Feed2', '$published', '0', '0')");
} if ( preg_match( "§^ttp://www.etc.dk/§", $link )) {
printf("",
trim($link),trim($title));
printf("",trim($description));
$insert = mysql_query("INSERT INTO rss_news VALUES ('$title', '$description', '$link', 'Etc', '$published', '0', '0')");
} else {
}
$title = "";
$description = "";
$category = "";
$link = "";
$insideitem = false;
}
}
}
function characterData($parser, $data) {
$data = rtrim(utf8_decode($data));
global $insideitem, $tag, $title, $category, $description, $link;
if ($insideitem) {
switch ($tag) {
case "TITLE":
$title .= $data;
break;
case "DESCRIPTION":
$description .= $data;
break;
case "LINK":
$link .= $data;
break;
case "CATEGORY":
$category .= $data;
break;
}
}
}
$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");
if ($fp !== false)
{
while ($data = fread($fp, 4096))
xml_parse($xml_parser, $data, feof($fp));
fclose($fp);
}
xml_parser_free($xml_parser);
}
?>
</dl>
</body>
</html>
Scriptet køres ved hjælp af CRON hvert minut, men en gang imellem springer den nyheder over. Der er ikke umiddelbart noget mønster i dem, der indsættes i databasen med forsinkelse.
Er der nogle der kan hjælpe mig med at optimere scriptet? Jeg giver gerne flere point, såfremt det er det, der skal til :)
MVH Weeelo
