phpbar.de logo

Mailinglisten-Archive

[php] Strings fressen Speicher auf

[php] Strings fressen Speicher auf

Peter Bieling net3 at media-palette.de
Mi Apr 11 16:37:31 CEST 2012


Hallo Mario,

Am 11.04.2012 13:39, schrieb "Mario Haßler":
> Der Code sieht ganz einfach so aus: In einer Schleife werte ich Zeilen
> einer Textdatei aus, und falls zutreffend setze ich
>
>    $ID[$id] = 0;

wie wird die Textdatei eingelesen?
Mit file() oder mit fgets()
http://php.net/manual/de/function.fgets.php ?

Wenn Du file() für eine große Datei verwendest, hast Du natürlich schon 
einen erheblichen Speicherverbrauch.

> Darin ist $id ein String (z. B. 'cNzxdCrMn'). Mit dem Wert 0 fange ich
> nichts an, es geht mir im weiteren Verlauf nur um
>
>    if (isset($ID[$id])) ...
>
> und
>
>    foreach (array_keys($ID) as $id) ...
>
> Es könnte also auch sein, dass der Wert 0 unterschiedlich viel Speicher
> frisst. Hat jemand eine Idee, wie ich das minimieren kann?

Dafür müsste man wissen, was Du genau vorhast und wie groß die Dateien, 
die Keys und die Arrays etwa sind.

foreach (array_keys($ID) as $id)
kopiert $id, statt es direkt zu verwenden.
Eine for-Schleife wäre ökonomischer.

Eventuell könnte man den Key auch verkleinern, wenn man einen Hash-Wert 
oder einen Substring speichert. Das hängt natürlich davon ab, was Du 
vorhast.
Bei mehrfachen Zugriffen und großen Datenmengen würde ich die Zeilen in 
eine Datenbanktabelle schreiben.

Viele Grüße

Peter




php::bar PHP Wiki   -   Listenarchive