Hallo zusammen,
ich versuche grad die EPG-Daten für bestimmte Kanäle auszulesen. Ich habe mal eben quick and dirty folgendes versucht:
Code
$anfang = microtime(true);
$channels = file("/etc/vdr/channels.conf");
$channels_count = count($channels);
for($n=1;$n<$channels_count;$n++) {
if(substr($channels[$n],0,1) != ":") {
$usedchannels[] = $channels[$n];
}
else {
$n = $channels_count;
}
}
$usedchannels_count = count($usedchannels);
for($n=0;$n<$usedchannels_count;$n++) {
$channel_explode = explode(":", $usedchannels[$n]);
$channel_id = $channel_explode[3] . "-" . $channel_explode[10] . "-" . $channel_explode[11] . "-" . $channel_explode[9];
echo "<br><br>" . $channel_explode[0];
exec("svdrpsend.pl LSTE " . $channel_id, $epgdata);
$epgdata_count = count($epgdata);
for($i=0;$i<$epgdata_count;$i++) {
switch (substr($epgdata[$i],4,1)) {
case "E": //Event
$event_array = explode(" ", $epgdata[$i]);
$start_time = date("H:i", $event_array[2]);
//echo $start_time . " - ";
break;
case "T": //Title
$event_title = substr($epgdata[$i], 6);
//echo $event_title . " - ";
break;
case "S": //Subtitle
$event_subtitle = substr($epgdata[$i], 6);
//echo $event_subtitle . " - ";
break;
case "D": //Description
$event_description = substr($epgdata[$i], 6);
//echo $event_description . "<br>\n";
break;
}
}
}
$ende = microtime(true);
$zeit = ($ende - $anfang) ;// 1000;
echo $anfang . " - " . $ende ."<br><br>";
echo "<br><br>" . $zeit;
Alles anzeigen
Leider dauert die Ausführung (bei mir sind es 9 Sender) ca. 10 Sekunden, was nicht wirklich als performant bezeichnet werden kann. Was gibt es für Möglichkeiten dies zu beschleunigen?
- Geht es per Direktzugriff auf die epg.data schneller? Ich müsste ja auch die komplette Datei "durchsuchen".
- Zunächst alles in eine MySQL packen - dann geht es sicher viel schneller, aber die redundante Datenhaltung gefällt mir nicht.
Gruß,
Matthias