php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.04.2008, 16:33  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard Smarty: Templatedateien werden nicht aktualisiert!

Hallo.

Ich schlage mich gerade mit einem merkwürdigen Problem mit Smarty herum. Lokal habe ich eine Website erstellt, in der es mir kein Problem ist, die .tpl Dateien zu aktualisieren. Nachdem ich eine .tpl Datei geändert habe, wurde das Ergebnis immer sofort angezeigt.

Leider ist das jetzt online nicht mehr so, da kann ich die Templatedatei ändern so viel ich will, aber das Ergebnis wird nicht angezeigt (Sprich: Es wird immer die alte Version angezeigt). Der einzige Weg, wie ich sie doch aktualisieren kann, ist der, dass ich die ganze Templatedatei umbenenne, aber das kann nicht Sinn & Zweck des Ganzen sein.

Ich weiß nicht genau, ob das jetzt an Smarty liegt, oder an meinem Webserver, aber ich glaube sogar eher letzters:

Kann es sein, dass der Server eine alte Version von der .tpl (/ .html datei - hab ich tesweise auch mal probiert) im Speicher hat, und deswegen Smarty die neue Datei nicht aktualisiert?


Leider bin ich mit meinem Latein am Ende. Der Code ist glaub ich nicht wirklich relevant, aber ich poste trotzdem mal was..:

PHP-Code:
init.php
<?php
session_start
();
error_reporting(E_ALL);
ini_set("display_errors",true);

$set = array();
// Pagesettings ...
$dir getcwd();
// Connect to DB ... 


// Initializing Smarty
require('/data/www/Smarty/Smarty.class.php');
$smarty = new Smarty();
$smarty->caching 0// Hatte ich vorher nicht drinnen, dachte aber es könnte an dem liegen und habs mal eingefügt. bringt leider nichts
$smarty->template_dir $dir.'/Templates/';
$smarty->compile_dir '/data/www/Smarty/Compiledir/';
$smarty->cache_dir '/data/www/Smarty/Cache/';
$smarty->config_dir '/data/www/Smarty/Config/';
$smarty->assign("set",$set);

$Pagearray = array();
$Pagearray['def'] = "Startseite"// Default Page that should be displayd.
$Pagearray['min'] = 3// Minimum Length of Request String
$Pagearray['dir'] = $dir// Current working dir
$Pagearray['smarty'] = $smarty// Smarty
?>

//danach sieht der Aufruf so in der Art aus..:
index.php
<?php
    
include("init.php");
    
$smarty->display("top.html");
    
$Page = new Pagemanager($Pagearray); // Klasse validiert User eingaben, lädt die zu zeigende Seite, etc. schlussendlich wird mit display("... .html") ein Seiteninhalt ausgegeben   
    
$smarty->display("bottom.html");
?>

Hätte irgendjemand von euch eine Idee, an was das liegen könnte?



danke für die Hilfe,


Andi
DER_Brain ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.04.2008, 16:40  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Schalte die Caching-Funktion komplett aus (also auch das $this->cache_dir weglassen) und leere das Cache-Verzeichnis. Dann müsste es eigentlich gehen.
Manko10 ist offline  
Alt 19.04.2008, 16:50  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Hoi

liegt wohl eher nicht am Caching.
1. du musst Caching explizit vor einem Template aktivieren
2. wird eine gecachte Datei neu aufgebaut wenn sich die kompilierte Datei ändert.

Also versuch mal in dem Teil wo du die ganzen Pfade für Smarty angibst folgende Einstellung zu setzen.

PHP-Code:
<?php
$smarty
->compile_check true;
?>
Damit wird das Template bei jedem Aufruf neu erstellt! Sollte aber im Produktiveinsatz, also auf dem Webserver, auf false gestellt werden. Wenn du dann natürlich eine neue Datei auf den Server lädst musst du einem die kompilierten Templates löschen.

Ansonsten nutzt du ja bei den Einstellungen $smarty->caching = 0; Das ist ansich schon default eingestellt, musst du also nicht setzen. Und sonst wenn du irgendwo im Code Caching auf 1/true setzt wird JEDES Template welches danach aufgerufen wird gecacht. Also solltest du vor jeden display() oder fetch() Caching auf 0 setzen. Also nur wenn du irgendwo Caching verwendest.
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline  
Alt 19.04.2008, 18:04  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Manki: Leider gehts nicht so einfach.
@RaZor:

Eigentlich hab ich ja gar nicht vor zu cachen.. nur hab ich mir gedacht, ich setze das caching explizit auf 0, da es eben nicht funktioniert hat.


Ich hab jetzt ein bisschen gegoogelt und bin auf das hier gestoßen:
Zitat:
$force_compile
This forces Smarty to (re)compile templates on every invocation. This setting overrides $compile_check. By default this is FALSE. This is handy for development and debugging. It should never be used in a production environment. If $caching is enabled, the cache file(s) will be regenerated every time.
damit funktioniert es auf jeden fall, jedoch bin ich mir ned sicher, ab wann es zu performance problemen kommt, bzw. würde ich mein problem damit nur umgehen, und nicht lösen, oder?


lg
DER_Brain ist offline  
Alt 19.04.2008, 18:47  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Hast du wirklich gelesen was ich geschrieben hab?

Das hat garnichts mit Caching zutun über was ich geschrieben hab. Nur am Ende hab ich dir einen Tipp für $smarty->caching = 0; gegeben.

Wenn compile_check auf true steht dann wird im normal Fall nach einer Änderung am Template dieses neu erstellt. Wenn es auf false steht wird NIE das Template neu erstellt, außer es existiert noch nicht.

force_compile wäre auch eine Möglichkeit, compile_check sollte allerdings ausreichen.


Wieso willst du überhaupt dass auf deinem Server die Templates immer neu generiert werden? Dafür ist es doch das compilen da, damit diese berechnung nur einmal stattfindet. Wenn du ein Update im Template machst musst du halt einmal das compiled Template löschen und dann passts wieder auf dem Server!

Und aufm localhost zur Entwicklung kannst du compile_check auf true lassen bzw. zur not auch force_compile setzen!
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline  
Alt 19.04.2008, 18:55  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

klar hab ich es gelesen

also:

leider hat das mit compile_check alleine nicht hingehaun, da ich dafür immer das compile dir löschen müsste.. ich möchte allerdings dynamische Inhalte "reinpacken", weshalb sich diese Frage auch erübrigt:
Zitat:
Wieso willst du überhaupt dass auf deinem Server die Templates immer neu generiert werden? Dafür ist es doch das compilen da, damit diese berechnung nur einmal stattfindet. Wenn du ein Update im Template machst musst du halt einmal das compiled Template löschen und dann passts wieder auf dem Server!

also spricht jetzt - für ein kleines projekt - was dagegen, force_compile zu nutzen?


lg
Andi
DER_Brain ist offline  
Alt 19.04.2008, 20:24  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Anderer Gedanke: Vielleicht stimmt das Erstellungsdatum der Datei auf dem Server nicht?
Zergling-new ist offline  
Alt 20.04.2008, 12:29  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich denke dieser Gedanke könnte stimmen:

hab jetzt mal testweise ne datei erstellt:
PHP-Code:
<?php
    
print "FILEMTIME: ".date("d.m.Y H:i:s",filemtime("index.php"));
?>
// Ausgabe: FILEMTIME: 20.04.2008 11:26:40
wie man sieht dürfte die Serverzeit um eine Stunde zurückgehen.. Richtet Smarty sich nach der Serverzeit?


Ich werd mal schaun ob und wie ich das in den Griff bekomme


dankesehr!


lg
Andi

EDIT: time() formatiert gibt mir allerdings die richtige Zeit wieder!
DER_Brain ist offline  
Alt 20.04.2008, 14:26  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Smarty bezieht sich schon auf die Serverzeit. Daher sollte da nicht das Problem liegen. Und Smarty kompiliert die Templates ja auch wenn dynamische Inhalte drin sind! Also es ist egal ob du da Konstrukte drinnen hast oder nicht! Die werden so oder so später dynamisch ersetzt.

Ich versteh trotzdem nicht warum du bei jedem Aufruf die Templates neu generieren lassen willst? Das ist extra so gemacht damit dies NICHT geschieht. Die Templates sollten doch im Normalfall nicht mehr geändert werden nachdem du sie hochgeladen hast.
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline  
Alt 24.04.2008, 22:40  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich schätze so ganz hab ich den Sinn von Templates noch nicht verstanden wie es aussieht, aber okay..

Fürs jetztige Projekt lasse ich es mal so, da nicht mit Millionen von Besuchern zu rechnen ist, aber das nächste mal schaue ich, dass ich schon vorher besser plane


danke für eure Hilfe, Thread kann geschlossen werden.


lg
Andi
DER_Brain ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Smarty + MySQL = immer falsche Ausgabe m0use` PHP Tipps 2006 44 21.11.2008 20:30
Problem mit Smarty ccfirefox HTML, Usability und Barrierefreiheit 1 25.10.2007 16:19
Was ist Aufgabe des Templates (Smarty), was nicht? agrajag PHP Tipps 2007 8 24.02.2007 13:19
Smarty => 1ste allgemeine Verunsicherung Canni PHP Tipps 2006 7 10.10.2006 17:56
Smarty + Oop Problem Komandar PHP Tipps 2006 5 25.07.2006 14:36
Smarty + Oop Komandar PHP Tipps 2006 17 30.05.2006 10:30
Smarty verschachtelt snatch-ic PHP Tipps 2006 16 28.02.2006 20:54
[Erledigt] Navigation auf Smarty umstellen?! PHP-Fortgeschrittene 3 10.01.2006 09:19
Smarty installiert und nun? Cyrus PHP Tipps 2005-2 5 28.10.2005 16:14
Smarty Error Simon9990 PHP Tipps 2005-2 8 07.07.2005 09:34
Smarty und X-Cart Profis gesucht Beitragsarchiv 1 21.05.2005 13:38
[Erledigt] includepathproblem pear blockiert smarty und umgekehrt PHP Tipps 2005 1 08.05.2005 18:46
Über Smarty Daten i d Datenbank (php MyAdmin) aktualisieren. PHP Tipps 2005 1 26.01.2005 09:40
Smarty? Die wesentlichen Vorteile? Off-Topic Diskussionen 7 20.09.2004 13:04
was ist schneller smarty, oder normaler php code? eQuin PHP-Fortgeschrittene 2 03.09.2004 11:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
smarty nicht aktualisiert, smarty cache leeren, smarty templates_c löschen, smarty cache löschen, smarty templates_c leeren, smarty compile_dir abschalten, smarty template aktualisieren, smarty cache deaktivieren, smarty löschen, smarty template cache leeren, smarty cache, smarty templates_c deaktivieren, smarty templates_c nicht speichern, smarty templates löschen, smarty compile_dir deaktivieren, cache und compiled templates löschen smarty, smarty compiliert nicht, smarty kompiliert nicht mehr, smarty 3 set template dir, http://www.php.de/php-tipps-2008/45815-smarty-templatedateien-werden-nicht-aktualisiert.html

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.