php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.11.2005, 18:57  
Gast
 
Beiträge: n/a
Standard [Erledigt] Smarty: Ist Caching sinnvoll?

Hi!

Klar, die Frage sollte sich selbst erklären: Meistens sollte Caching ja sinnvoll sein.
Doch bei meinen mometanen Script (ein Teil eines Browsergames) ist ein
aktiviertes Caching in Smarty langsamer als ein deaktiviertes.

Aktiviert: ~20-25ms Deaktiviert: ~10-14ms
(AMD Athlon-Mobile 1200 Mhz, 256 MB Ram, WinXP Home)

Ich frage mich nur wieso?

Ich habe genau mit dem Zend-Debugger nachgeschaut: Er
umgeht durch das Cacheing ungefähr 30 MySQL-Abfragen (ist eine recht
komplexe Seite) und dazu noch ca. 200-300 Zeilen Code (so viel weil eine
Schleife mit jeweils 2 aufgerufenen Funktionen) - dazu kommen noch die
Zeilen für die MySQL Klasse...

Ich kann es mir nicht erklären, und ich bin 100% sicher, dass er wirklich
die Cachedatei im Cachemodus lädt!

Hat jemand ein ähnliches Phänomen?
Wäre für Rückmeldungen oder Erklärungen dankbar!

Thomas

PS: Oder kann es einfach sein, dass die Cache-funtktion von Smarty derart komplex ist, dass es einfach zu langsam ist?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.11.2005, 19:02  
Gast
 
Beiträge: n/a
Standard

einige Codezeilen:

die Stelle, wo der Content generiert wird:
PHP-Code:
<?php
        
if ($smarty->is_cached('con_baumenu.tpl'$_SESSION['userid']."|".$_SESSION['x'].":".$_SESSION['y']) == false){
            
$db->query("SELECT id,title,beschreibung_short,holz,eisen,nahrung,menschen,dauer,img,bezeichnung,crewls FROM crewl_data_gebaude");
            
$a 0;
            while (
$db->fetchRowWhile()){
                
$a++;
                
$row $db->row;
            
                if (
gebaude_allowed($row['id']) == true){;
                    
// Daten übernehmen
                    
$data[$a] = $row;
                
                    
// Dauer ausrechnen und formatieren
                    
$dauer_format format_time(calc_dauer($row['id'],$row['bezeichnung'],$row['dauer']));
                    
$data[$a]['dauer'] = $dauer_format;
                
                    
// Rohstoffewerte formatieren
                    
$data[$a]['eisen'] = number_format($data[$a]['eisen'],0,".",".");
                    
$data[$a]['holz'] = number_format($data[$a]['holz'],0,".",".");
                    
$data[$a]['nahrung'] = number_format($data[$a]['nahrung'],0,".",".");
                    
$data[$a]['menschen'] = number_format($data[$a]['menschen'],0,".",".");
                    
$data[$a]['crewls'] = number_format($data[$a]['crewls'],0,".",".");
                    
                    
// Anzahl bestehender Gebäude
                    
$anz check_gebaude($row['id']);
                    if (
$anz and $row['id'] != and $row['id'] != 2){
                        
$data[$a]['title'] .= " (".$anz.")";
                    }
                }
            }
            
$smarty->assign('data'$data);
        }
        
        
$tplfile = array('con_working.tpl' => '''con_baumenu.tpl' =>  $_SESSION['userid']."|".$_SESSION['x'].":".$_SESSION['y']);?>
Hier wird das file geladen:

PHP-Code:
<?php
        
### Content ###
        
foreach ($tplfile as $key => $value){
            if (
$value){
                if (
$value == 'cache'){
                    echo 
"load cache";
                    
$smarty->cache_lifetime 3600;
                    
$smarty->display($key);
                }else{
                    echo 
"load cache";
                    
$smarty->cache_lifetime 3600;
                    
$smarty->display($key$value);
                }
            }else{
                echo 
"load no cache";
                
$smarty->cache_lifetime 0;
                
$smarty->display($key);
            }
        }
?>
Warum ist der Teil so komplex? ... Ganz einfach, weil ich unterscheiden
muss, ob ich mehrere templatedateien hintereinander ausgeben will und
ob wenn es nur eins ist, dies gecached werden soll oder nicht, genauso
bei mehreren. Hinzu kommt, ob ich eine cacheid mit dazuhaben will.

... ich merk grad, das ich den zweiten teil eigentlich garnicht brau, wenn ich immer gleich in nem array mache .... doof doof doof *autsch* ... naja okay
  Mit Zitat antworten
Alt 28.11.2005, 21:17  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard Re: Smarty: Ist Caching sinnvoll?

Zitat:
Zitat von TTornado
Aktiviert: ~20-25ms Deaktiviert: ~10-14ms
(AMD Athlon-Mobile 1200 Mhz, 256 MB Ram, WinXP Home)

[..] Er
umgeht durch das Cacheing ungefähr 30 MySQL-Abfragen (ist eine recht
komplexe Seite) und dazu noch ca. 200-300 Zeilen Code
Das kann ich mir beim besten willen nicht vorstellen...
Zergling-new ist offline   Mit Zitat antworten
Alt 29.11.2005, 15:36  
Gast
 
Beiträge: n/a
Standard

hmm okay ... was mir noch aufgefallen ist: Der erste Aufruf bei Cache dauer ja logischweise länger. Bei Caching=false, gibt es diesen einen längeren Aufruf auch. Hat das vielleicht mi der Compile-Version zutun ... ich hab wegen echt keine ahnung, an was da noch liegen könnte ...
  Mit Zitat antworten
Alt 29.11.2005, 15:50  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

läuft noch iene php-seitige cache-engine ?
robo47 ist offline   Mit Zitat antworten
Alt 29.11.2005, 17:15  
Gast
 
Beiträge: n/a
Standard

Hm sorry, die Frage versteh ich ned

Meinst du, ob die Cacheengine von Smarty in PHP ist? ... öhm joa, also ich habe keine extensions oder so in die phpini eingetragen, falls du das meinst ...
  Mit Zitat antworten
Alt 29.11.2005, 17:24  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

ich dachte an
eAccelerator
den zend-cache oder so,
mit php-seitig meine ich als modul von php um PHP-Code in form von bytecode zu cachen

sprich dass auch hier beim ersten aufruf eines scripts erst ein "cache" des scripts erstellt wird


mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 29.11.2005, 17:33  
Gast
 
Beiträge: n/a
Standard

Achso nein - jetzt weiß ich, was du meinst - sowas läuft nicht.


(Hab es gerade nochmal getestet - mit cache definitif ~10 ms langsamer)

*edit*

Ich probier das ganze jetzt mal nicht auf nen local server, sondern auf nen richtigen webserver ... mal gucken, ob es da genauso ist ...
  Mit Zitat antworten
Alt 29.11.2005, 18:47  
Gast
 
Beiträge: n/a
Standard

... so ... hat zwar ne Weile gedauert, aber folgendes Ergebnis:

Mit Cache und ohne Cache ist genau gleich schnell! (~7.5 ms)
Bei beiden ist der Erstaufruf 20ms.

Also irgendwas muss auch bei deaktivierten Caching gecached werden, denn auch hier gibt es einen Erstaufruf, der länger dauert. Ich kann mir nur nicht erklären, wass es sein soll, denn auf dem server läuft 100% garnichts!

... ich bin mit meinem latein schon lange am ende
  Mit Zitat antworten
Alt 29.11.2005, 21:16  
Gast
 
Beiträge: n/a
Standard

ach mist ich hab hier überall bei den milisekunden eine 0 vergessen ...

jetzt weiß ich auch, was zergling gemeint hat ... sry bin halt zu blöd zum umrechnen
  Mit Zitat antworten
Antwort


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
Smarty: Templatedateien werden nicht aktualisiert! DER_Brain PHP Tipps 2008 9 24.04.2008 22:40
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
problem mit javascript und smarty snatch-ic HTML, Usability und Barrierefreiheit 2 08.06.2006 22:11
Smarty verschachtelt snatch-ic PHP Tipps 2006 16 28.02.2006 20:54
Smarty installiert und nun? Cyrus PHP Tipps 2005-2 5 28.10.2005 16:14
Frage zu Smarty PHP Tipps 2005-2 10 07.07.2005 14:49
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
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 langsam, smarty sinnvoll, smarty nocache, smarty no cache, smarty caching, zend smarty, smarty mysql, smarty fetch langsam, php cache sinnvoll, smarty cache wann sinnvoll?, smarty zu langsam, smarty ohne caching sinnvoll?, smarty sinnvoll?, smarty {nocache}, 14ms for a php script, smarty php cache, smarty ohne cache, zend smarty no cache id, macht smarty langsam, mysql smarty where

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:55 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.