Ben belki yoluyla-özenli bir çaba, PHP bellek tükendi, korkunç hata iletisiyle karşılaştı ettik:
# # # # Bayt tükenmiş İzin bellek boyutu hattında 123 file.php içinde (# # # # bayt ayırmaya çalıştı)
Increasing the limit
Eğer ne yaptığınızı biliyor ve sınır görmüyeli artırmak istiyorsanız memory_limit:
ini_set('memory_limit', '16M');
ini_set('memory_limit', -1); // no limit
Dikkat! Sadece belirti değil problem çözme olabilir!
Diagnosing the leak:
Hata mesajı ben, bellek sızması, ya da gereksiz yere biriken olduğuna inandığımız bir döngü withing bir çizgiye işaret. Ben her yinelemenin sonunda memory_get_usage()
ifadeleri basılı ettik ve o sınıra ulaşıncaya kadar sayısı yavaş yavaş büyüyebilir görebilirsiniz:
foreach ($users as $user) {
$task = new Task;
$task->run($user);
unset($task); // Free the variable in an attempt to recover memory
print memory_get_usage(true); // increases over time
}
Bu sorunun amaçları için en kötü spagetti kod akla $user
yere küresel kapsamda gizleme veya Task
olduğunu varsayalım.
What tools, PHP tricks, or debugging voodoo can help me find and fix the problem?