Memory Leaks in PHP

28. Februar 2016 um 09:07 Uhr von Wolfgang Stengel zu PHP
Nach einem Projektumzug vor ein paar Wochen von einem stabilen aber langsamen Projekt auf zwei Servern zu einer totalen Apokalypse mit Load-Zahlen von 50 an der Tagesordnung auf vier (!) Servern habe ich nun endlich herausgefunden dass PHP 5.1.6 ganz großer Mist ist.

Leider konnte ich nicht 100%ig herausfinden was genau das Problem war. Sicher ist das PHP 5.1.6 noch das SimpleXML-Problem hat bei dem ein Speicherloch im Zusammenhang mit foreach auftritt. Dieses lässt sich relativ leicht lösen in dem der Node vor dem foreach kopiert wird:
// Speicherloch
foreach($node->books as $book) ...

// Funktioniert gut
$books=$node->books;
foreach($books as $book) ...
Danach ging's ein wenig besser, einzelne Maschinen fielen trotzdem wegen zu hohem Load aus. Vor ein paar Tagen wurde auf PHP 5.3.1 aktualisiert, seitdem läuft alles stabil. Ich kann also empfehlen immer eine aktuelle Version von PHP zu verwenden. Bei einigermassen vernünftigem Code lassen sich Anwendungen auch schnell kompatibel einstellen.
PHP Wolfgang Stengel