2013-02-25 21 views
5

zend_mm_heap corrupted pojawia się jako komunikat o błędzie na napisanym przeze mnie programie do renderowania dużego środowiska.Uszkodzony stertę w skrypcie PHP

Podejrzewam, że jest to spowodowane zbyt dużą liczbą przypisań zmiennych w skrypcie, chociaż nie jestem tego pewien, ponieważ napisałem skrypt, aby mieć tylko około 20 zmiennych w danym momencie, z których jeden jest tablicą, która może pomieścić do 500 elementów. To powiedziawszy, liczba iteracji w sumie jest rzędu kilku miliardów.

Czy mam rację w moim podejrzeniu, a jeśli tak, to czy można coś z tym zrobić? Czy byłoby lepiej, na przykład, uruchomić skrypt na chwilę, a następnie zrzucić ważne zmienne do pliku i ponownie uruchomić skrypt, dzięki czemu można pobrać te zmienne i kontynuować?

+0

Czy już to sprawdziłeś? http://stackoverflow.com/questions/2247977/what-does-zend-mm-heap-corrupted-mean –

+0

Tak, mam. Żadna z odpowiedzi nie wydaje się trafna. Nie używam OB, używam obiektu, ale zamiast tego próbowałem używać funkcji proceduralnych i błąd nadal się pojawiał, rozmiar tablicy jest jawnie kontrolowany przez sprawdzenie go przed dodaniem do niego, używam systemu Windows i tak dalej. –

+0

Coś w dzienniku błędów PHP? Czasami mogą tam być dodatkowe informacje, które nie były wyświetlane na ekranie, nawet jeśli twój skrypt jest ustawiony na wyświetlanie wszystkich błędów. –

Odpowiedz

0

Widziałem ten problem i mogę go odtworzyć za pomocą phalcon, ale wydaje się, że pochodzi z pamięci podręcznej APC. Naprawiłem przełączając z APC na zend opcache. Możesz spróbować wyłączyć APC, aby sprawdzić, czy zniknie.

Najlepszym powodem dla którego mogę się dowiedzieć z moich badań jest to, że APC robi coś dla pamięci, której używa zend. PS, to nie ma nic wspólnego z frameworkiem Zend, jest to błąd związany z częściami Zend, które zostały połączone w php.

0

Rozwiązaniem problemu jest pobranie najnowszej wersji APC zgodnej z wersją PHP.

Będziesz musiał wymusić instalację, co spowoduje nadpisanie starej wersji APC. W wielu przypadkach rozwiąże to problem.

Powiązane problemy