2013-02-25 8 views
5

zend_mm_heap corrupted kommt als eine Fehlermeldung auf einem PHP-Programm, das ich geschrieben habe, um eine große Umgebung vorzurendern.Beschädigter Heap im PHP-Skript

Ich vermute, dass es durch zu viele Variablenzuweisungen im Skript verursacht wird, obwohl ich unsicher bin, da ich das Skript geschrieben habe, um nur etwa 20 Variablen zu einer bestimmten Zeit zu haben, von denen eine ein Array ist Halten Sie bis zu 500 Elemente. Die Gesamtzahl der Iterationen liegt jedoch in der Größenordnung von einigen Milliarden.

Bin ich in meinem Verdacht richtig, und wenn ja, kann man etwas dagegen tun? Wäre es beispielsweise besser, das Skript eine Weile auszuführen, dann wichtige Variablen in eine Datei auszugeben und das Skript neu zu starten, so dass es diese Variablen aufnimmt und fortfährt?

+0

Haben Sie sich das schon angesehen? http://stackoverflow.com/questions/2247977/what-does-zend-mm-heap-corrupted-mean –

+0

Ja habe ich. Keine der Antworten scheint relevant zu sein. Ich benutze nicht OB, ich benutze ein Objekt, aber ich versuchte prozedurale Funktionen statt und der Fehler ist immer noch passiert, die Größe des Arrays wird explizit kontrolliert, indem Sie es vor dem Hinzufügen, ich verwende Windows, und so weiter. –

+0

Alles im PHP-Fehlerprotokoll? Manchmal kann es dort zusätzliche Informationen geben, die nicht auf dem Bildschirm angezeigt wurden, selbst wenn Ihr Skript so eingestellt ist, dass alle Fehler angezeigt werden. –

Antwort

0

Ich habe dieses Problem gesehen und kann es mit Phalcon reproduzieren, aber es scheint aus APC-Cache stammen. Ich habe das durch Umschalten von APC auf Zend Opcache behoben. Sie können versuchen, APC zu deaktivieren, um zu sehen, ob es verschwindet.

Am besten kann ich aus meinen Untersuchungen schließen, dass APC etwas tut, das Zend benutzt. PS, es hat nichts mit Zend Framework zu tun, es ist ein Fehler in Bezug auf die Teile von Zend, die in PHP zusammengeführt wurden.

0

Die Lösung für Ihr Problem ist das Herunterladen der neuesten Version von APC, die mit Ihrer PHP-Version kompatibel ist.

Sie müssen die Installation erzwingen, wodurch die alte Version von APC überschrieben wird. Dies wird in vielen Fällen das Problem beheben, das Sie haben.