Page 1 of 1
PHP - Funktionen als Modul?
Posted: 2008-01-23 10:23
by djbennyf
Hallo,
ich habe zur Zeit in meinem Projekt eine ca. 2000 Zeilen (80 KB) große include Datei mit Funktionen.
Ist es möglich ohne Zend Guard diese Funktionen in eine Art Modul zu wandeln das im Apache bzw als Extention bei PHP geladen wird, damit die Datei nicht immer geöffnet wird, sonderndiese Funktionen standartmäßig bereit stehen.
Ist es alternativ Möglich Apache / PHP anzuweisen diese Datei im Ram zu chachen?
Auf dem Server läuft nur dieses Projekt.
Vielen Dank
Re: PHP - Funktionen als Modul?
Posted: 2008-01-23 18:06
by daemotron
Wenn Du eine eigene Extension schreiben willst, die Deine Funktionen bereitstellt, dann wirf mal einen Blick auf
http://www.php.net/manual/de/internals2 ... eleton.php - leider ist die Entwickler-Doku zu PHP5 allerdings noch recht unvollständig... Ich würde mir eine bestehende Extension wie z. B. die Suhosin-Extension vornehmen, die Struktur nachvollziehen und darauf aufbauend dann meine eigene Extension bauen. Dass Du dazu Deinen Code von PHP nach C portieren musst, ist Dir aber hoffentlich klar?
Zu Deiner zweiten Frage: Du kannst mit einem Bytecode-Cache wie APC arbeiten. Wenn Du mit tmpfs ein Verzeichnis für APC bereitstellst, liegen die gecached-ten Dateien im RAM.
Re: PHP - Funktionen als Modul?
Posted: 2008-01-31 20:31
by djbennyf
Wie kann es eigentlich sein, dass ein PHP Script mit 100 KB wenn ich es include 1 MB Speicher bereitstellt? obwohl dieses nur aus Funktionen ebsteht, die noch nicht aufgerufenw erden?
Re: PHP - Funktionen als Modul?
Posted: 2008-01-31 20:58
by Joe User
Weil Includes beim Parsen immer vollständig (gegebenenfalls auch mehrfach) inkludiert werden, egal wieviel Code daraus wirklich benötigt wird.
Re: PHP - Funktionen als Modul?
Posted: 2008-01-31 21:23
by djbennyf
Die Datei ist 100 KB groß und enthält keine weitere Includes. Wenn ich davor und danach "memory_get_usage()" ausführe erhalte ich 1 MB RAM verbrauch.
Vielen Dank für die Infos
Re: PHP - Funktionen als Modul?
Posted: 2008-01-31 21:50
by Joe User
In dem Include verwendest Du garantiert weitere Funktionen, auch "PHP-Befehle" sind Funktionen, und diese benötigen nunmal Speicher...
Re: PHP - Funktionen als Modul?
Posted: 2008-01-31 21:59
by Roger Wilco
DjBennyF wrote:Die Datei ist 100 KB groß und enthält keine weitere Includes. Wenn ich davor und danach "memory_get_usage()" ausführe erhalte ich 1 MB RAM verbrauch.
Code: Select all
$ ls -ls test.php
4 -rw-r--r-- 1 user users 88 31. Jan 21:55 test.php
$ cat test.php
<?php
for($i=0; $i<100000; $i++) $a[$i] = 'abcde';
echo memory_get_usage()."n";
?>
$ php test.php
25975328
Unglaublich! Ich komme mit einer 88 Byte großen Datei auf über 25 MB verbrauchten Speicher... ;)
Kurzum: Die Dateigröße hat nichts mit dem Speicherverbrauch des Skripts zu tun. Da gibt es ganz andere Faktoren...
Re: PHP - Funktionen als Modul?
Posted: 2008-01-31 22:09
by djbennyf
Es gibt manchmal diskussionen die ins lächerliche gezogen werden. Mir ist durchaus bekannt aus C Programmen, dass man Speicher zulaufen lassen kann.
Wenn ich 100 KB Funktionen lade, diese aber nicht aufrufe, hätte ja auch eine andere Sache den Speicher reservieren können.
Vielen Dank aber für die Informatioen bisher
Code: Select all
function GuteHilfe() {
for($i=0; $i<100000; $i++) print "Hilft mir immer weitern";
}
//GuteHilfe()
Diese Funktion wird ja auch nicht ausgeführt nur weil sie geladen wird...