XML Datein per Link Aktuallisierung erzwingen, wie?

Belee

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.518
Hallo Leute

Auf http://italo-disco.onairmusic.de seht Ihr oben hinter Now Playing die XML Datei die ausgelesen wird.

Das Problem. Irgendwie klappt die Aktuallisierung nicht, auch nicht wenn ich im Browser auf Refresh klicke. Um genau zu sein, nach den 2-3 Titel ist Ende im Gelände, dann verbleibt da ein Titel und wird nicht mehr aktuallisiert.
Das Kuriose dabei, wenn ich den Web-Player starte "ist ein JavaScript-PopUp" und diesen wieder schließe, die Seite danach im Browser aktuallisiere wird der aktuelle Titel angezeigt.

Woran kann das liegen? hat jemand eine Idee? und ist es möglich per Link den Refresh also das einlesen der XML vom Server zu erzwingen? und wenn ja, wie bitte?

Hier die XML Datei die ich per Include an der Stelle eingebunden habe.

PHP:
<?php // Die jetzt.xml von der gew³nschten Station laden
$inhalt = file_get_contents("http://www.laut.fm/user/italo-disco/jetzt.xml");
$tagsToReplace=array("<title>","</title>","<name>","</name>","<image>","</image>","
<teaser>","</teaser>","<url>","</url>","<record>","</record>");$tagsReplaceWith=array
("<title><![CDATA[","]]></title>","<name><![CDATA[","]]></name>","<image><![CDATA[","]]></image>
","<teaser><![CDATA[","]]></teaser>","<url><![CDATA[","]]></url>","<record><![CDATA[","]]></record>");
$inhalt=str_replace($tagsToReplace,$tagsReplaceWith,$inhalt);
// Den Inhalt der Datei mit simplexml parsen
$xml = simplexml_load_string($inhalt);
// Artist - Songtitel ausgeben
echo $xml->tracks->track->artist->name." - ".$xml->tracks->track->title; ?>

Danke.

EDIT:
Muss hier hinzufügen dass das Problem nur unter IE-Browsern akut ist, mit dem FF ist alles so wie es
sein muss. Hat der IE eventuell einen Caching-Bug?
 
Zuletzt bearbeitet:
ja ich sehs.. du schreibst alles in deine variablen. Du hast aber vergessen die XML datei neu zu schreiben.

such mal nach fopen in http://php.net
ich habe irgendwo eine funktion die eine XML Datei auf den server schreibt. naja auf jeden fall veränderst du nicht deine lokale datei auf den server sondern nur das was du ausgelesen hast.
 
Nach was fürn Ding? :-)
Ich habe keinen Zugriff auf den Server auf dem diese XML erstellt wird, ich kann sie nur aufrufen und auslesen, mehr nicht.

Wie also kann ich diese XML oder das PHP-Script welches diese ausliesst per Link/Klick refreshen?
Die XML holt das PHP-Script vom Server der nicht mir gehört, alles was ich jetzt will ist...diese PHP-Datei die bei mir auf meinem Webspace liegt und in der Seite per "include" eingebunden ist, per Klick z.B. Name: Reload neu zu laden, so das dieses PHP-Script die XML neu vom Server holt?
 
Dein ganzes Script ist totaler quark wenn ich das mal sagen darf -.-
http://php.net/preg_match_all
Dein script ist viel zu umständlich >.<.
Naja auch egal... Das script läd doch beim aufrufen die sachen immer neu aus^^ Hat dann was mit deinem Browser zu tun...
Edit.: Achja ... auf die Dauer ist das eh nicht so toll wenn mehrere Leute kommen. Da wirste dann wohl zu einer Datenbank greifen müssen.
 
Zuletzt bearbeitet:
CDATA zu setzen ist normalerweise die Aufgabe des XML-Erstellers. Außerdem klammerst du alles damit ein, brauchst aber nur 2 Informationen.
 
Zuletzt bearbeitet:
Dann schreib doch das Script so wie Du es machen würdest ;-)

Das Problem, nach dem 3 Titel bleibt die Anzeige stehen und aktuallisiert nicht mehr, nicht mit dem IE und auch nicht mit dem FF. Sind jetzt beide Browser kaputt?
Kann sowas auch am Hoster liegen? das der sowas unterbindet?
 
Das Reload sollte man idealerweise mit Ajax machen (es wird dann nur der Titel und nicht die ganze Seite refreshed). Außerdem solltest du das XML-File in deinem PHP-Script irgendwie cachen und nur alle x Sekunden tatsächlich von der laut.fm-Seite abholen.
Wieso du überhaupt alles Mögliche rumersetzt weiß ich jetzt auch nicht...wieso brauchst du dieses CDATA denn?
Du könntest auch mal versuchen in deiner PHP-Datei header mitsenden um das Caching zu verhindern:
PHP:
header ("Pragma:no-cache");
header("Cache-Control:private,no-store,no-cache,must-revalidate");
Trotzdem wäre eine Ajax-Lösung schöner und moderner.
 
Zurück
Oben