Tüm ani ben daha önce hiç ettik benim uygulamada sorunlarla sahip oldum. Ben Apache hata günlüğünü kontrol karar verdi, ve ben "bozuk zend_mm_heap" diyerek bir hata mesajı buldum. Bu ne anlama geliyor.
OS: Fedora Core 8 Apache: 2.2.9 PHP: 5.2.6
unset()
s edin. Emin olun yapmanız $this
(veya eşdeğerleri) Yıkıcılar ve bu unset()
s yıkıcılar olarak için başvuru sayısı neden olmaz değil unset()
referanslar 0'a düşmesi aynı nesne. Biraz araştırma yaptım ve genellikle yığın bozulmasına neden olur ne buldum.
Bir PHP bug report about the zend_mm_heap corrupted hata var. Bunu yeniden nasıl [2011-08-31 07:49 UTC] f dot ardelian at gmail dot com
Bir örnek için yorum bakın.
Ben tüm diğer "çözüm" (değişim php.ini
, az modülleri, vb kaynak PHP derlemek) sadece sorunu gizlemek bir his var.
Ben burada bir cevap vardır sanmıyorum, bu yüzden benim deneyim ekleyeceğiz. Ben rastgele httpd sırasında parçalama arızası ile birlikte bu aynı hatayı gördük. Bu bir cPanel sunucu oldu. Söz semptom apache rastgele (krom alınan hiçbir veri, veya bağlantı firefox sıfırlandı) bağlantısını sıfırlamak oldu. Çalıştı çoğu zaman, bazen etmedi - bu görünüşte rasgele idi.
Ben sahne çıktı tamponunun üzerine geldi OFF oldu. Çıkış tamponlama ima Konuyu, okuyarak, ben ne olacağını görmek için (= 4096) bunu açık. Bu noktada, onlar all hataları göstermeye başladı. Bu hata artık tekrarlanabilir olduğunu olmak iyi oldu.
Ben geçti ve uzantıları devre dışı bırakma başladı. Bunlar arasında, eaccellerator, PDO, ioncube yükleyici, ve looked şüphe, ama hiçbiri yardım bol.
Sonunda cPanel-kolay-yükleyici modülü çeşit görünüyor "homeloader.so" olarak yaramaz PHP uzantısı bulunamadı. Çıkarılmasından sonra, ben başka sorunlar yaşamamış.
O notta, bu yüzden milage bu cevapların tümü ile değişir bu bir genel hata iletisi görüntülenir, eylem iyi ders alabilir:
Yukarıdaki tüm başarısız, ayrıca gibi şeyler deneyebilirsiniz:
İyi şanslar.
Benim için sorun PDO_MYSQL kullanıyordum. Sorgu 1960 sonuç vermedi. Ben 1900 kayıtları döndürmek için çalıştı ve çalışıyor. Yani sorun pdo_mysql ve çok büyük bir dizidir. Ben orijinal mysql uzantısı ile sorgu yeniden yazdı ve çalıştı.
$link = mysql_connect('localhost', 'user', 'xxxx') or die(mysql_error());
mysql_select_db("db", $link);
Apache Önceki hataları rapor vermedi.
zend_mm_heap corrupted
zend_mm_heap corrupted
zend_mm_heap corrupted
[Mon Jul 30 09:23:49 2012] [notice] child pid 8662 exit signal Segmentation fault (11)
[Mon Jul 30 09:23:50 2012] [notice] child pid 8663 exit signal Segmentation fault (11)
[Mon Jul 30 09:23:54 2012] [notice] child pid 8666 exit signal Segmentation fault (11)
[Mon Jul 30 09:23:55 2012] [notice] child pid 8670 exit signal Segmentation fault (11)
Ben PHP için Mongo 2.2 sürücüsünü kullanarak bu hata vardı:
$collection = $db->selectCollection('post');
$collection->ensureIndex(array('someField', 'someOtherField', 'yetAnotherField'));
^ ^ DOESNT'İŞ
$collection = $db->selectCollection('post');
$collection->ensureIndex(array('someField', 'someOtherField'));
$collection->ensureIndex(array('yetAnotherField'));
^ ^ İŞLER! (!)
Ben bir hafta boyunca, bu benim için çalıştı, bu konu ile çekişti, veya en azından öyle görünüyor
In php.ini
bu değişiklikleri yapmak
report_memleaks = Off
report_zend_debug = 0
Benim set up
Linux ubuntu 2.6.32-30-generic-pae #59-Ubuntu SMP
with PHP Version 5.3.2-1ubuntu4.7
Bu işe yaramadı.
So I tried using a benchmark script, and tried recording where the script was hanging up. I discovered that just before the error, a php object was instantiated, and it took more than 3 seconds to complete what the object was supposed to do, whereas in the previous loops it took max 0.4 seconds. I ran this test quite a few times, and every time the same. I thought instead of making a new object every time, (there is a long loop here), I should reuse the object. I have tested the script more than a dozen times so far, and the memory errors have disappeared!
Benim durumumda, ben kodu aşağıdaki unuttum:
);
Ben etrafında oynanan ve orada burada kodu unuttum - Bazı yerlerde ben yığın yolsuzluk var, bazı durumlarda sadece düz ol 'seg hatası:
[Wed Jun 08 17:23:21 2011] [notice] child pid 5720 exit signal Segmentation fault (11)
Ben mac 10.6.7 ve xampp gidiyorum.
Eğer özellikleri kullanıyorsanız ve özellik (autoloading durumunda yani) sınıftan sonra yüklenirse önceden özelliği yüklemeniz gerekir.
https://bugs.php.net/bug.php?id=62339
Not: Bu hata çok çok rastgele; nedeniyle bu doğanın.
PHP 5.3 üzerinde, çok 'aramalardan sonra, bu benim için çalıştı çözümdür:
Ben ekleyerek disabled the PHP garbage collection Bu sayfa için ettik:
<? gc_disable(); ?>
sorunlu sayfanın sonuna kadar, tüm hataları yok etti.
Ben neden bir sürü bu soruna neden olabilir düşünüyorum. Ve benim durumumda, ben 2 sınıfları aynı isim isim, ve bir başka yüklemeye çalışacağız.
class A {} // in file a.php
class A // in file b.php
{
public function foo() { // load a.php }
}
Ve benim durumumda bu soruna neden olur.
(: Gerçek tohum php esnaf db çalışan, laravel çerçevesini kullanma)