zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Templatescript aktualisiert nicht

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 25.05.2008, 22:26
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard Templatescript aktualisiert nicht

Servus.

In einer Funktion belege ich die Variable $seite per file_gets_contents() mit dem Inhalt einer html Datei.
Mittels str_replace() werden einige Platzhalter entfernt/belegt und am Ende der Funktion wird mit return $seite der Wert an en Funktionsaufruf in der Index.php zurückgegeben. Soweit so gut.
Nun habe ich Änderungen an dem html file vorgenommen (welches "in" $seite "geladen" wird) und stelle fest, das diese Änderungen nicht übernommen werden. Im Quelltext lese ich immer noch die alte Datei.
Kann das mit Sessions zu tun haben?
Ich verwende Sessions um einige Werte, wie den Menüaufbau auch für andere funktionen zur Verfügung ztu haben und nicht immer die Menüblabla funktion durchzulaufen.
Ich kann mir das fast nicht vorstellen, da $seite nie irgentwo gespeichert wird. Andererseits, wenn ich eine Stunde warte, und die Seite neu aufrufe sind die Änderungen da.

Cache habe ich entleert, bringt nix.
Verdammich, woran kann das liegen?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 26.05.2008, 00:08
Benutzerbild von Timo
table-layout: none;
XHTMLforum-Kenner
 
Registriert seit: 11.11.2006
Beiträge: 5.345
Timo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein Lichtblick
Standard

Vielleicht wird die Datei in den Cache vom Server gespeichert. Hast du auch mal mit Logout versucht oder muss die Session ablaufen??
__________________
Um weitere Erklärungen eingeblendet zu bekommen, drücken Sie bitte die Tastenkombination Alt + F4
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 26.05.2008, 08:07
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Guten Morgen Timo!

Es sieht so aus als hättest Du Recht. Wie ich oben schon sagte: Es muß die Session ablaufn, bevor ich die geänderte Datei sehen kann. Selbst wenn ich die templ.html lösche - was ich gestern noch probiert habe - bleibt die Seite im alten Zustand sichtbar.

Komisch ist noch was:
Ich binde 2 JS Scripten ein. Sobald ich die Seite aufrufe sind diese Scripten da. Sobald ich die Seite Refreshe - nicht mehr?

Wie kann ich das ändern?
Ist dafür der Einstz von ob_clean() das richtige?


EDIT:
Ich habe nun flush(), ob_end_flush(), ob_clean() probiert, habe aucf diesen code:
PHP-Code:
    session_unset();
  
$_SESSION=array(); 
ans Ende der Index Datei gesetzt.
Hilft alles nix.

Geändert von paracelsus (26.05.2008 um 09:56 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 26.05.2008, 11:39
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

hm, sicher, dass das PHP-Script angeworfen wird, wenn Du die geänderte Datei requesten willst?

Soweit ich weiß gibt es keinen Cache im Dateisystem, also muss entweder Dein PHP oder der Browser cachen.
Verwendest Du evtl. ein drittes Script, welches zwischen Verarbeitung und Ausgabe hängt, was cachen könnte?

Oder verwendest Du evtl. irgendwas von dem hier: Turn On Compression to Speed Up Apache - Easy Apache Speed Tips ?

Wobei Du ja geschrieben hast, dass Du den Cache bereits geleert hast, hm.

Was ist das mit den Javascripts? Fehlt der komplette Code zum einbinden, oder bekommst Du nen Fehler, dass er die Scripte nicht laden kann?

Kannst Du das Problem vielleicht auf ein (minimales) Codebeispiel reduzieren und posten?
Mit Zitat antworten
  #5 (permalink)  
Alt 26.05.2008, 14:44
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Mach ich glatt:
Code aus der Index.php:
PHP-Code:
    # Template rufen
    
$seite get_template();
    echo 
$seite
Code der Funktion get_template:
PHP-Code:
# Diese Funktion holt das Template in die Variable $seite
# und ersetzt alle Platzhalter gegen die Werte, welche die dort aufgerufene Funktion retourniert
function get_Template() {
    global ..............;
    
#
    # angeforderte Sprache
    
$lang $start['lang'];
    
#

    # Hier wird nun das template reingeholt:

    # Wenn ein globales Template aktiv ist, dieses laden
    
if ( $global_templ == true ) { $seite file_get_contents$language[$default_lang]['templ']."templ.html" ); }
    
# ansonsten Sprachliches Template aufrufen
    
else { $seite file_get_contents$language[$lang]['templ']."templ.html" ); }

...
   
    
#Hier sind dann eine Menge str_replace´s, hier als Beispiel
    
$seite str_replace ("%KONTAKT%"get_contact(), $seite);
...

    return 
$seite;
# ENDE function 
Der Pfad stimmt. Dazwischen gibt es kein script, das reinfunken könnte.
Die über str_replace aufgreufenen Funktionen liefern die dynamischen Inhalte zurück, das funkt.
Wenn ich einen Inhalt ändere, ist das sofort sichtbar, das Problem sind die Veränderungen in der oben geladenen Gerüst: templ.html
Ich bin ein einziges Frage zeichen.

Zu den JS: ich glaube das das zusdammenhängt. Ich würde also erstmal dieses Problem lösen wollen und dann weitersehen.

Hoffe Du blickst da durch.
Danke Dir

Geändert von paracelsus (26.05.2008 um 14:46 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 26.05.2008, 15:20
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

hm, an sich ja eigentlich ganz simpel aufgebaut.

Ich hoffe, dass $seite nicht als global definiert ist, weil das ansonsten schon komische Effekte nach sich ziehen könnte.

Ich würde vor der Bedingung einmal $seite leer initialisieren, glaube zwar nicht, dass es was damit zu tun hat, aber ist ja schnell eingefügt und auch wieder entfernt.

Ansonsten würde ich file_get_contents einmal durch fopen, fread, fclose ersetzen, weil, wie ich durch die Doku erfahren habe, file_get_contents Memory Mapping verwendet, falls das OS das unterstützt. Dies mapped eine Datei wohl direkt in den Arbeitsspeicher, was evtl. eine Art Caching mit sich bringen könnte.

Also den Code vielleicht einfach mal folgendermaßen abändern und schauen, ob sich was am Verhalten ändert.
PHP-Code:
# Diese Funktion holt das Template in die Variable $seite
# und ersetzt alle Platzhalter gegen die Werte, welche die dort aufgerufene Funktion retourniert
function get_Template() {
    global ..............;
    
#
    # angeforderte Sprache
    
$lang $start['lang'];
    
#

    # Hier wird nun das template reingeholt:
    
$seite '';
    
# Wenn ein globales Template aktiv ist, dieses laden
    
if ( $global_templ == true ) {
        
# $seite = file_get_contents( $language[$default_lang]['templ']."templ.html" );
        
$fp = @fopen($language[$default_lang]['templ']."templ.html""r");
        if (
$fp) {
            
$seite fread($fpfilesize($language[$default_lang]['templ']."templ.html"));
            
fclose($fp);
        }
        else {
            
$seite "Inhalt konnte nicht geladen werden";
        }
    }
    
# ansonsten Sprachliches Template aufrufen
    
else {
        
# $seite = file_get_contents( $language[$lang]['templ']."templ.html" );
        
$fp = @fopen($language[$lang]['templ']."templ.html""r");
        if (
$fp) {
            
$seite fread($fpfilesize($language[$lang]['templ']."templ.html"));
            
fclose($fp);
        }
        else {
            
$seite "Inhalt konnte nicht geladen werden";
        }
    }

...
   
    
#Hier sind dann eine Menge str_replace´s, hier als Beispiel
    
$seite str_replace ("%KONTAKT%"get_contact(), $seite);
...

    return 
$seite;
# ENDE function 
Ist natürlich nur ein Schuss ins Blaue. :-/

Ansonsten würde ich vorschlagen, auf Groß-/Kleinschreibung zu achten. Ich weiß zwar, dass es momentan nicht unterschieden wird, aber evtl. kommt das irgendwann.
Du definierst die Funktion mit "get_Template", rufst sie aber mit "get_template" auf, aber das nur am Rande.
Mit Zitat antworten
  #7 (permalink)  
Alt 26.05.2008, 15:24
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Danke für den Hinweis.
Ich werde diesen Code gleich mal testen, wenn es das ist kannst Du mich jubeln hören (und muß so einiges wieder mal umschreiben)

Gruß
Mit Zitat antworten
  #8 (permalink)  
Alt 26.05.2008, 15:38
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Sei nicht zu optimistisch, oft verstecken sich solche Fehler in miesen, kleinen Ecken, wo man sie überhaupt nicht vermutet.
Mit Zitat antworten
  #9 (permalink)  
Alt 26.05.2008, 16:39
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Tja, was soll ich sagen?
Hast Du mich jubeln gehört?
Es tut! Auf das muß man mal kommen!

Vielen vielen Dank, und ein grünes von mir!

Gruß
Thomas
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 26.05.2008, 16:43
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Wie jetzt, ernsthaft?

Ehrlich gesagt hatte ich nicht damit gerechnet, dass das funktioniert.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
CSS 2.1 Candidate Recommendation aktualisiert gato CSS 0 24.04.2009 20:22
Browser aktualisiert Seite nicht - Cacheproblem? ChOpSueY! Serveradministration und serverseitige Scripte 25 18.12.2008 21:06
RSS reader aktualisiert kein item Pepo Serveradministration und serverseitige Scripte 1 09.04.2008 15:15


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:03 Uhr.