PHP - Funktionen als Modul?

Bash, Shell, PHP, Python, Perl, CGI
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

PHP - Funktionen als Modul?

Post 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
User avatar
daemotron
Administrator
Administrator
Posts: 2639
Joined: 2004-01-21 17:44

Re: PHP - Funktionen als Modul?

Post 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.
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

Re: PHP - Funktionen als Modul?

Post 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?
User avatar
Joe User
Project Manager
Project Manager
Posts: 11176
Joined: 2003-02-27 01:00
Location: Hamburg

Re: PHP - Funktionen als Modul?

Post by Joe User »

Weil Includes beim Parsen immer vollständig (gegebenenfalls auch mehrfach) inkludiert werden, egal wieviel Code daraus wirklich benötigt wird.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

Re: PHP - Funktionen als Modul?

Post 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
User avatar
Joe User
Project Manager
Project Manager
Posts: 11176
Joined: 2003-02-27 01:00
Location: Hamburg

Re: PHP - Funktionen als Modul?

Post by Joe User »

In dem Include verwendest Du garantiert weitere Funktionen, auch "PHP-Befehle" sind Funktionen, und diese benötigen nunmal Speicher...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: PHP - Funktionen als Modul?

Post 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...
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

Re: PHP - Funktionen als Modul?

Post 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...