Warum verliert is_array () Speicher in PHP?

8

Gemäß meiner Ausgabe von xdebug gibt is_array () die Menge an Speicher frei, die als Argument an sie übergeben wird. Wenn ich ein großes Array übergebe, leckt es eine Menge Speicher, nur um zu überprüfen, ob es ein Array ist.

Gibt es einen Workaround dafür?

%Vor%

Hier ist das Code-Snippet, das das Leck verursacht:

%Vor%

Ich betreibe dies auf Linux (Ubuntu 9.04)

PHP: 5.3.2

xdebug: 2.0.5

uname -a gibt mir das:

Linux linux8 2.6.28-19-server # 64-Ubuntu SMP Wed Aug 18 21:57:33 UTC 2010 i686 GNU / Linux

    
MapDot 08.09.2010, 14:53
quelle

2 Antworten

5

Meine erste Reaktion:

Auswahl ist nicht unterbrochen .

Meine zweite Reaktion:

Sie können drei Dinge schließen:

  • ein weit verbreitetes Stück Software ( is_array ) ist kaputt - Sie sind der Erste, der es bemerkt
  • xdebug is broken meldet ein Leck, wo es keine gibt
  • xdebug und PHP funktionieren nicht gut zusammen, da es die Speicherverwaltung betrifft

Eine weit verbreitete und benutzte Funktion ist meist nicht das Problem. Versuchen Sie, das Auftreten des 'xdebug leak report' einzugrenzen, indem Sie einfacheren Code ausführen:

%Vor%

Sehen Sie sich den tatsächlichen Speicherverbrauch Ihrer PHP-Laufzeit an. Ich wette, es wird nicht wachsen.

    
xtofl 09.09.2010, 08:15
quelle
0

Ссылка kann ein geeigneter Work-around sein. Der beste Weg besteht darin, einen Patch zu senden, der den Fehler behebt, aber möglicherweise nicht im Rahmen Ihres Vertrags liegt.

    
Ian 08.09.2010 23:46
quelle

Tags und Links