anpera.net
https://anpera.homeip.net/phpbb3/

common.php zerlegen
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=3146
Seite 1 von 1

Autor:  theTJ [ So 26 Nov, 2006 22:29 ]
Betreff des Beitrags:  common.php zerlegen

hi @ all,
Ich wollt mal die PHP-/Apache-Freaks fragen, wie folgendes Performacetechnisch sich auswirkt:

ich habe die common.php zerlegt und alle einzelnen Funktionen in einzelne Files gepackt (ausser ein paar ein- und zweizeilige Funktionen) siese rufe ich alle per require-befehl auf....

das ganze hat sicher folgende vorteile:
    übersichtlicher :
      - sofort ersichtlich in welcher Funktion der Fehler liegt
      - weniger code-zeilen pro file
    leichter funktionen hinzuzufügen - nur noch in ein file packen und in den ordner legen


Ich glaube das sich dieses warscheinlich weder positiv noch negativ auf die Performace aufwirkt (wenn dann kaum spürbar oder???)
aber, ich will dem ganzen noch eine Funktion "vorsetzen", die nur benötigte module läd - dies sollte sicherlich eine schnellere verarbeitung ermöglichen...

greetz

theTJ

Autor:  Eliwood [ So 26 Nov, 2006 22:40 ]
Betreff des Beitrags: 

Es ist definitiv langsamer. Sogar spürbar.
Zumindest verlangsamte das Einbinder ausgelagerter Funktionen auf meinem lokalen Apache den Seitenaufbau von ungefähr 0.01 auf 0.05 - 0.1

Funktionen sinnvoll zusammenfassen ist besser als jede Funktion eine Datei. (z.B. "output.php" für output, rawoutput, addnav, appoencode, etc.., "commentary" für viewcommentary, addcommentary).

Autor:  theTJ [ So 26 Nov, 2006 22:48 ]
Betreff des Beitrags: 

Eliwood hat geschrieben:
Es ist definitiv langsamer. Sogar spürbar.
Zumindest verlangsamte das Einbinder ausgelagerter Funktionen auf meinem lokalen Apache den Seitenaufbau von ungefähr 0.01 auf 0.05 - 0.1

Funktionen sinnvoll zusammenfassen ist besser als jede Funktion eine Datei. (z.B. "output.php" für output, rawoutput, addnav, appoencode, etc.., "commentary" für viewcommentary, addcommentary).


ok thx für das schnelle feedback...
naja... die kombination von Funktionen hab ich noch keine wirklich sinnvolle gefunden daher...

aber was mich noch interessieren würde wie sieht es wohl aus, wenn man eine Funktion etwa folgender art "vorschiebt":

[php]
function modul($module=true) {
if(module) {
/* lad alle */
} else {
if(is_array($module) {
/* lad alle module sie im array stehen */
} else {
/* lad nur das eine modul */
}
}
}[/php]

Autor:  Eliwood [ So 26 Nov, 2006 22:53 ]
Betreff des Beitrags: 

Würde sicher "besser" sein, als immer alles laden.
Noch besser wäre, sofern Objekte vorhanden wäre, die Funktion __autoload(), damit man die Dateien automatisch einbinden könnte...

Ich schlage vor:
Die Grundfunktionen in wenige Dateien speichern und bereits in der common einbinden. Dann entweder über eine Hilfsfunktion, oder einfach so, oder über eine Konstande die Datei einbinden. Zum Beispiel:

[php]<?php
define('NEED_FOREST', true);
Require_once 'common.php';

## common.php:
if(defined('NEED_FOREST') && NEED_FOREST === true)) {
Require_once $library.'forest'.$ext;
}[/php]

Autor:  theTJ [ So 26 Nov, 2006 23:06 ]
Betreff des Beitrags: 

Eliwood hat geschrieben:
Würde sicher "besser" sein, als immer alles laden.
Noch besser wäre, sofern Objekte vorhanden wäre, die Funktion __autoload(), damit man die Dateien automatisch einbinden könnte...

Ich schlage vor:
Die Grundfunktionen in wenige Dateien speichern und bereits in der common einbinden. Dann entweder über eine Hilfsfunktion, oder einfach so, oder über eine Konstande die Datei einbinden. Zum Beispiel:

[php]<?php
define('NEED_FOREST', true);
Require_once 'common.php';

## common.php:
if(defined('NEED_FOREST') && NEED_FOREST === true)) {
Require_once $library.'forest'.$ext;
}[/php]


Die idee mit der konstanten ist gut...
und dann schnürt man eben Pakete wenn verschiedene Konstanten gesetzt sind....
ok, aber was bitte ist __autoload() ???

http://de.php.net/manual/de/function.spl-autoload.php

^^das ist das einzige was ich zu dem thema jetzt grad gefunden hab... und das klingt irgentwie komisch... - besonders weil nicht auf deutsch vorhanden ;-)

so long

ich geh jez :zzz:

und bastel dann morgen mal daran weiter ;-)

greetz
theTJ

Autor:  Garlant [ Mo 27 Nov, 2006 00:09 ]
Betreff des Beitrags: 

(lang lang ist's her das ich in dem bereich geschrieben hab. *Party schmeiß*)

Hallo theTJ,
Versuche es mal hier http://www.phpbar.de/w/autoload() und
hier (am besten beide Links ansehen).

Mfg Garlant

Autor:  theTJ [ Mo 27 Nov, 2006 19:48 ]
Betreff des Beitrags: 

Garlant hat geschrieben:
(lang lang ist's her das ich in dem bereich geschrieben hab. *Party schmeiß*)

Hallo theTJ,
Versuche es mal hier http://www.phpbar.de/w/autoload() und
hier (am besten beide Links ansehen).

Mfg Garlant


thx werd mir das dann wohl mal genauer ansehen^^

€dit:
Klingt eigentlich ganz Interessant...
aber dann müsste man doch alle Funktionen in Klassen umschreiben... (0.9.7) oder? kann ich beim erzeugen eines Objekts einer klasse auch einfach nur sagen, dass die zugehörigen Dateien geladen werden sollen?!?

naja ich schau mir mal noch php.net an...

Autor:  theTJ [ Sa 06 Jan, 2007 17:58 ]
Betreff des Beitrags: 

sry, für den doppelpost, aber ich wollt mal aufzeigen, wie ich die ganze sache jetzt gelöst habe...:

[php]
function callcomm($commonpart='commentary') {
if(file_exists("lib/$commonpart.lib.php")) {
require_once "lib/$commonpart.lib.php";
} else {
if(!headers_sent()) header('content-type: text/plain');
echo "$commonpart wurde in der LIB nicht gefunden, bitte informiere den Admin";
exit;
}
}
[/php]

das default, ist nur daher drin, da ich am anfang nur die Commentaryfunktionen in der commentary.lib.php ausgelagert hatte...

dann habe ich die forest() in die forest.lib.php ausgelagert und den Parameter dieser funktion hinzugefügt^^

aufgerufen werde die dateien, - die sich inzwischen im ordner "lib" befinden - mit folgender zeile
[php]
callcomm('commentary'); //für add und viewcommentary
[/php]

lohnt sich halt nur bei funktionen die in relativ wenigen Files benutzt werden...

ich hab z.zt.:
    commentary (add und view)
    forest
    showform

ausgelagert...

greetz
theTJ

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/