2009-03-06 17 views
11

PHP 5.0.4 olarak, değil yapılandırmak enable-bellek limitini yapmak eğer memory_limit yönergesi dikkate alınmaz. (Önerilen php.ini dosyasında 8M'ye ayarlandı, ancak belgeler göz ardı edildiğini söylüyor.) Yani bu durumda, her script başına bir bellek sınırı var mı, yoksa sadece sistem tarafından mı sınırlı? Ben PHP 5.2.8 yükseltme yapıyorum çünküPHP bellek limiti

sormak ve bu varsayılan olarak sınırlayıcı bellek izin vermez. Yani şimdi değeri uygun bir şeye ayarlamak zorundayım. önerilen php.ini dosyası artık o 128M ayarlı karşın, bunun 5.0.4 varsayılan olarak yaptığından dahadaha veya az ise bilmiyorum! Ben üretim sistemlerini yükseltme yapıyorum

, bu yüzden herhangi bir davranış önemli bir değişiklik önlemek istiyorum. documentation ("memory_limit" için arama) bu noktada çok kafa karıştırıcı. "Varsayılan" yazıyor, ancak yapılandırma dosyasında ayarlanan varsayılan değer mi, yoksa bellek sınırlaması devre dışı olduğunda kullandığı varsayılan değer mi anlamıyorum.

cevap

9

PHP'deki bellek sınırlayıcısı isteğe bağlıdır; derleme zamanında devre dışı bırakırsanız hiç sınır yoktur.

5.0.4'te, derleme zamanında açık bir şekilde istenmedikçe devre dışı bırakıldı, nedeni, bellek sınırlayıcısının useless until 5.2 olduğu ve yapılması gereken çok şey sayılmadığından, mysql işlevleri gibi şeyler de dahil. Onların saymak öğrendiği şimdi 5.2.1 den üzerine döndü. Şüpheniz varsa

, devre dışı bırakmak veya yeni varsayılan kullanmak için yapılandırma dosyasını güncellemek emin olun. 8MB bırakmaktan ve neredeyse kesinlikle sorunlara neden olur 5.2.8 yükseltme.

4

128M çok yüksek. Buna ihtiyacın olabilir ama şaşıracaktım.

Daha da önemlisi, sınır php.ini içindeki küresel varsayılan ayarlanabilir:

memory_limit = 32M 

Ayrıca komut geçersiz kılabilirsiniz:

<?php 
ini_set('memory_limit', '128M'); 
... 

Muhtemelen bulacaksınız Sadece çok fazla belleğe ihtiyaç duyan bir avuç scriptin var. Rahat bir değer (testle) bulun ve daha fazlasına ihtiyaç duyanlar için. 5.2 8MB önce php

+1

Sorum şu: 5.0.4'te, eğer memory_limit ayarlamıyorsanız, hala bir tane zorlanıyor mu? –

+3

+1, PHP'nin çöp toplayıcısı bir kereden fazla bozuldu. Zaman aşımlarından kurtulmak çok popüler olduğundan, kodunuzun aslında bir bilgisayara __doing__ olduğunu bilmek önemlidir. –

3

varsayılan bellek limiti, bu php 5.2.0 yılında 16MB varsayılan yükseltildi. Şu anda 128MB bir varsayılan.

açıkça öncesi 5.2 versiyonlarının davranışı yeniden 8MB bellek sınırı ayarlamak için. php.net web sitesinde "Kaynak Sınırları" başlığı altında

bak.

http://us.php.net/ini.core

DÜZENLEME

"PHP 5.2.1 öncesinde, bu yönergeyi kullanmak için o yapılandırmak hattında enable-hafıza-limitini kullanarak derleme sırasında etkin olması gerekiyordu Eğer olmasaydı. "

Kontrol eski sunucunun derleme bayrakları, bu limitsiz tedbirleri aldılar sağladı.

+1

Bu 8MB aslında zorlanmış olup olmadığını biliyor musunuz? Php.ini'deki bu ayar için varsayılan değerdi, ancak dokümanlar ayarın yok sayıldığını söylüyor. –

+0

Bu cevabı oylamak istemedim, bir kazaydı. – boclodoa

İlgili konular