Seiten: [1] 2   Nach unten
  Drucken  
Autor Thema: 1.0 TPLE  (Gelesen 586 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« am: 16. Juli 2010, 18:32:25 »

Die 1.0 TPLE Standard werde ich in den nächsten 14 Tagen frei geben.
Wie an anderer Stelle bereits beschrieben entfällt Smarty komplett - TPLE ist angesagt.
Die Vorteile sind enorm:

1. wesentlich höhere Geschwindigkeit
2. Supercache entfällt aus dem Grunde wird nicht mehr benötigt
3. PHP Syntax
4. Natürlich voll PHP 5.2 ..  5.3.2 E_STRICT

Die  TPLE-Version ist nicht die aus der Enterprise Edition, aber das macht nichts.
Features wie die umwerfende Fehleranzeige sind dennoch enthalten (siehe Bild).


* t1.jpg (16.58 KB, 628x118 - angeschaut 22 Mal.)
« Letzte Änderung: 16. Juli 2010, 18:38:34 von piratos » Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #1 am: 16. Juli 2010, 20:13:14 »

Das sind so die Werte die ich auf dem Entwicklungsrechner (== nicht optimal für Produktion sondern optimal für Entwicklung eingestellt - sogar Profiler läuft da noch mit):

Zeit 0.019989013671875 Sekunden // RAM 1279824 bytes Peak1440568
Zeit 0.033595085144043 Sekunden // RAM 1278896 bytes Peak1440032
Zeit 0.041639089584351 Sekunden // RAM 1280496 bytes Peak1441440

Der erste RAM-Verbauchswert ist der Normalwert, der zweite der Spitzenwert.
Die Byteszahl ist doppelt so hoch als bei 32 Bit Systemen , weil 64 Bit System.

Wenn ich wie CMSMS rechnen würde, welche die Anwender bei der Zeit aber auch beim RAM bescheissen dann müsste ich beim RAM

$orig_memory = (function_exists('memory_get_usage')?memory_get_usage():0);

sogar bei mir noch 643336 abziehen.

Die Schwankungen bei mir  hängen mit dem Profiler und Xdebug zusammen.
Die normale Durchschnittszeit liegt  stets unter 0,02 Sekunden und eiert meist im Bereich 0,01..0,02 herum.
Da das Werte sind die im Bereich Supercache liegen entfällt Supercache - kein Bedarf mehr daran.

Gemessen wurde die 1:1 Kopie(umgesetzt auf TPLE)  des Powercms.org - Templates mit den normalen Standardinhalten.

Unter TPLE war  die deutsche Sprachdatei für das Frontend aktiv (was es bei der Smartyversion nicht gibt), auch das kostet etwas Zeit und RAM (XML).

Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #2 am: 16. Juli 2010, 20:25:59 »

Die Angaben muss ich gleich korrigien, da da noch Xajax mitgelaufen ist, was ersatzlos gestrichen ist.

Zeit 0.021317958831787 Sekunden // RAM 960016 bytes Peak1121168

Anbei mal ein Profilerbild.
Wer genau hinsieht, der weiss auch warum die 2.0 Version TPLE noch schneller ist.  Grinsend


* t1.jpg (69.34 KB, 1244x740 - angeschaut 19 Mal.)
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #3 am: 16. Juli 2010, 21:28:15 »

Das

Zeit 0.0091159343719482 Sekunden // RAM 960024 bytes Peak1120872 640688

ist übrigens eine Standardzeit auf einem Produktionsserver - da kann man nicht meckern würde ich meinen.
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #4 am: 17. Juli 2010, 20:21:50 »

Hier schon mal vorab eine Kurzinformation zu TPLE.

* tple.pdf (100.4 KB - runtergeladen 14 Mal.)
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #5 am: 27. Juli 2010, 12:50:41 »

Xajax habe ich belassen der wird nur in der E Version entfernt und ersetzt.

Im Backend jedoch gibt es drei Sprachen deutsch, englisch und niederländisch.

Irgendwie war mir mal das jemand französisch übersetzen wollte aber das wurde wohl nix.

Wer die Sprachdatei (XML) noch übersetzen möchte und zwar schnell der kann sich ja melden.

So sieht das Backend auf NL aus:



* t1.jpg (70.8 KB, 912x611 - angeschaut 8 Mal.)
« Letzte Änderung: 27. Juli 2010, 12:55:57 von piratos » Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #6 am: 27. Juli 2010, 14:59:10 »

Zwischen TPLE und Smarty gibt es gewaltige Unterschiede, völlig klar , sind ja auch komplett andere Systeme.

TPLE kann auf jede Menge Modifikatoren und auch Tricks die man bei Smarty benötigt verzichten.

Ein paar Dinge jedoch sind unter PHP in der Schreibweise  etwas zu kompliziert für Templates.

Nehmen wir mal die Sprachen die in der config.php definiert werden un eine beliebige anzahl aufweisen kann:

Code:
$config['sprachen']=array('de','en');

Im Verwaltungsbereich haben wir dann öfters mal eine Auswahl wenn es um Sprachen geht.

So sieht etwas z.B. in Smarty aus.

Code:
{foreach from=$config.sprachen item=entry}
  <option value="{$entry}" {if $sprache eq $entry}selected="selected"{/if}>{$entry}</option>
 {/foreach}

Unter TPLE gibt es mehrere Möglichkeiten:

1.
Code:
<?php
                
                
foreach ($this->VARS['config']['sprachen']) as $entry) {
                    echo 
'<option value="' $entry '"';
                    if (
$this->ret('sprache') == $entry)
                        echo 
'selected="selected"';
                    echo
'>' $entry '</option>';
                }
                
?>

2.

Code:
<?php
                
                
foreach ($this->ret('config.sprachen') as $entry) {
                    echo 
'<option value="' $entry '"';
                    if (
$this->ret('sprache') == $entry)
                        echo 
'selected="selected"';
                    echo
'>' $entry '</option>';
                }
                
?>

Besonders häufig geht es um Ausgabe von Ergebnissen aus einer DB Abfrage.

Das Ergebnis liegt dann in der Regel in einem Array von Arrays vor und jede Zeile bzw. Wert wird dann normal so innherhalb einer Schleife angesprochen:
Code:
foreach ($this->VARS['news'] as $row) {
 echo $row['spaltenname'];
}


Unter TPLE kann man dann aber folgendes machen:
Code:
foreach ($this->VARS['news'] as $this->VARS['row']) {
 $this->show('row.spaltenname');
}
Die Schreibweise wird damit einfacher denn eckige Klammern mit Tüddelchen sind nicht jedermanns Sache.

Das gleiche funktioniert natürlich auch mit der Funktion ret.
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #7 am: 27. Juli 2010, 16:53:07 »

Die im Backend zur Verfügung stehenden sprachen werden in der config.php definiert:

Code:
$config['backendsprachen']=array('de','en','nl');

Die erste definierte Sprache ist die Defaultsprache, es genügt also eine einfache Änderung der Reihenfolge um z.B. das Login in englischer Sprache zu starten, danach zählen die Usereinstellungen.
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #8 am: 28. Juli 2010, 10:59:17 »

Es besteht übrigens innerhalb der Templates keinerlei direkte Zugriffsmöglichkeiten auf ansonsten global genutzte Variable wie z.B. $config, $db etc. , lediglich wie unter PHP üblich der Zugriff auf die Superglobalen wie _SESSION etc. .

Wenn in der config.php  $config['tpldb']=1; gesetzt ist, dann kann ein Zugriff auf die Tabellen in den Templates über PiDatabase erfolgen , d.h. man kann direkt dort Abfragen rein setzen ($result $this->db->GetArray('SQL blah',array(parameter,parameter));  empgohlen wird dann das Ergebnis direkt in TPLE abzulegen wie $this->VARS['result']= $this->db->GetArray('SQL blah',array(parameter,parameter));  weil man dann die Kurzform wie $this->show('result.spaltenname') einsetzen kann.

Die Funktionen display und fetch haben als zweiten Parameter den Schalter l (wie lang) - Default ist true.

Templatenamen sind ohne Anhängsel zu übergeben , also z.B. so 'template' und nicht 'template.tpl.php'.

Ist der Schalter l auf true (Default) dann wird der Templatename expandiert auf Sprachbreite :

template.de.tpl.php oder template.wiki.tpl.php vorausgesetzt, das die Sprache in der config aktiviert d.h. vorhanden ist, anonsten geht es auf default de.

Ist der Schalter l auf false wird template.tpl.php in allen Fällen verwendet.

Alle Templates und externe Plugins müssen if (!defined('INSIDE_POWER_CMS')) die ('DIRECT ACCESS FORBIDDEN'); enthalten, was die Möglichkeit eines Direktaufrufes unterbindet.
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #9 am: 28. Juli 2010, 11:56:09 »

Wie bereits bemerkt werden so einige Plugins und Modifierer entfallen da wir mit PHP direkt auch alle direkten Möglichkeiten haben.

Einer der TPLE Funktionen ist selectdate welche z.B. das Smartyplugin pwhtml_select_date ersetzt, aber eine direkte Funktion ist.

Selectdate arbeitet grundsätzlich numerisch  , stellt also nie ausgeschriebene Monatsnamen oder Tagesnamen dar um grundsätzlich hier alle möglichen Probleme von Haus aus zu umgehen, die durch unterschiedliche Systemeinstellungen hervorgerufen werden können. Zudem ist es  sind die Anzahl der Programmierzeilen (nur 10 netto) ein Bruchteil von der Smartyversion.





* t1.jpg (16.64 KB, 797x171 - angeschaut 8 Mal.)
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #10 am: 28. Juli 2010, 17:38:16 »

So manches Template wird im Vergleich zu Smarty ziemlich verkürzt und auch überschaubarer - nehmen wir z.B. mal ein Select - Feld mit merhreren Optionen (aus listnews)

Vorher Smarty:

Code:
<select name="news_sortierung" onchange="xajax_NewList(xajax.getFormValues('newsform'));">
        <option value="news_start_desc" {if $sorted eq 'news_start_desc'}selected="selected"{/if}>Startdatum absteigend</option>
        <option value="news_start_asc" {if $sorted eq "news_start_asc"}selected="selected"{/if}>Startdatum aufsteigend</option>
        <option value="news_end_desc" {if $sorted eq "news_end_desc"}selected="selected"{/if}>Enddatum absteigend</option>
        <option value="news_end_asc"{if $sorted eq "news_end_asc"}selected="selected"{/if}>Enddatum aufsteigend</option>
        <option value="news_titel_asc"{if $sorted eq "news_titel_asc"}selected="selected"{/if}>Titel aufsteigend</option>
        <option value="news_titel_desc"{if $sorted eq "news_titel_desc"}selected="selected"{/if}>Title absteigend</option>
        <option value="news_bearb_desc"{if $sorted eq "news_bearb_desc"}selected="selected"{/if}>Bearbeitet absteigend</option>
        <option value="news_bearb_asc"{if $sorted eq "news_bearb_asc"}selected="selected"{/if}>Bearbeitet aufsteigend</option>
    </select>

Nachher TPLE

Code:
<?php $this->bss("news_sortierung"$this->ret('sorted'),array('news_start_desc','news_start_asc','news_end_desc','news_end_asc','news_titel_asc','news_titel_desc','news_bearb_desc','news_bearb_asc') , " onchange=\"xajax_NewList(xajax.getFormValues('newsform'));\" ",'','','','',array('Startdatum absteigend','Startdatum aufsteigend','Enddatum absteigend','Enddatum aufsteigend','Titel aufsteigend','Titel absteigend','Bearbeitet absteigend','Bearbeitet aufsteigend')); ?>
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #11 am: 28. Juli 2010, 18:51:48 »

Mal ein Beispiel eines Zugriffes auf eine Tabelle direkt aus einem Template, wenn zugelassen:

Code:
<?php
    $this
->assign('aliase'$this->db->GetArray('SELECT content_alias  FROM cms_content ORDER BY content_id '));
    foreach (
$this->ret('aliase') as $this->VARS['c_entry'])
        echo 
'<p>' $this->ret('c_entry.content_alias') . '</p>';
    
?>

Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #12 am: 28. Juli 2010, 23:36:43 »

Mit der Funktion cycle wird ein Array von Werten nacheinander durchlaufen und zur Ausgabe gebracht.

So etwas wird relativ häufig für gestalterische Sachen benötigt, deswegen habe ich die Funktion als Bestandteil der Klasse direkt implementiert:

public function cycle($name=null, $value=null, $delimiter=',')

cycle kann beliebig häufig in einem Template aufgerufen werden und zudem mit beliebig vielen unterschiedlichen Namen in $name.

Es erfolgt nur einmal eine Zuweisung von $value, man kann also nicht den gleichen Namen mit neuen Werten überschreiben und value muss entweder ein array sein oder ein über $delimiter trennbarer Text.
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #13 am: 29. Juli 2010, 15:46:51 »

Das downgraden der Enterpriseversion zur Standardversion macht mehr Arbeit als ich es mir gedacht habe.
Gespeichert

piratos
Administrator
Normal
*****
Offline Offline

Beiträge: 8020



« Antworten #14 am: 01. August 2010, 19:44:21 »

Im Endtest zeigte sich hier auf dem ORG Server folgende Leistung

Zeit 0.031777143478394 Sekunden // RAM 1747896 bytes Peak1939576

Es handelt sich dabei um die Startseite der ORG.

Das bedeutet - wir liegen in der Generierungszeit sehr gut , alles voll dynamisch und RAM Bedarf deutlich unter 2 MB - da kann man nicht meckern.
Gespeichert

Seiten: [1] 2   Nach oben
  Drucken  
 
Gehe zu: