Bitkin 33554432 bayt İzin bellek boyutu php (43148176 bayt ayırmaya çalıştı)

8 Cevap php

Bu hata iletisi, herhangi bir öneriniz sunulan ediliyor?

Allowed memory size of 33554432 bytes exhausted (tried to allocate 43148176 bytes) in php

8 Cevap

Sonunda ben cevabı buldum:

ini_set('memory_limit', '-1');

Bu sunucu sınırsız bellek kullanımını alacak, cezası çalışıyor.

Öneri arkadaşlar verdiğiniz için teşekkür ederiz.

Burada paylaşılan barındırma sınırı artırmak için iki basit yöntem vardır:

  1. If you have access to your PHP.ini file, change the line in PHP.ini If your line shows 32M try 64M: memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)

  2. If you don't have access to PHP.ini try adding this to an .htaccess file: php_value memory_limit 64M

Script çok fazla bellek kullanıyor. Eğer kontrol tükendi ve nesneleri oluşturma veya döngünün her geçişte diziler ekliyoruz bir döngü varsa bu genellikle PHP olabilir.

Sonsuz döngü kontrol edin.

Bu sorun değil, denemek ve null onları ayarlayarak ile tamamladı nesneleri yok ederek PHP yardım. örn. $OldVar = null;

Hata gerçekten de olur kodunu kontrol edin. Eğer bu hat belleğe büyük bir miktar tahsis edilmesini beklersiniz? Değilse, denemek ve yanlış gitti anlamaya ...

If you want to read large files, you should read them bit by bit instead of reading them at once.
It’s simple math: If you read a 1 MB large file at once, than at least 1 MB of memory is needed at the same time to hold the data.

Yani kullanarak onları azar azar okunan fopen & olmalıdır fread.

Bu hızlı fark daha bellek tüketir bir şekilde PHP program maalesef kolaydır. Yerine referansları kullanarak kopyalama dizeleri, diziler ve nesneler PHP 5 daha fazla otomatik olarak PHP 4 daha bu yapmak gerekiyordu olsa, bunu yapmak. Ama birkaç adımdan fazla bütünlüğü içinde belirlenen veri ile uğraşan küçük mantıksal birim işleme göre de savurgan olduğunu olacak Aynı anda. Klasik örnek bir veritabanı büyük resultsets ile çalışıyor: En programcılar foreach() ile bir veya birden fazla defa bir diziye tüm resultset getir ve daha sonra üzerinde döngü. Bir anda bir satır almak ve işlemek için bir while() döngü kullanmak verimli çok daha fazla bellek olduğunu. Aynı şey, bir dosyayı işleme için geçerlidir.

Php.ini dosyası 64MB maksimum bellek sınırı artırmak.

Google search

Eğer bu kadar bellek ayırmaya çalışırken neden ama ben sorabilir miyim? Hangi kod satırı o anda başarısız?

@ Haider Abbas:

ini basan caiz değilse o zaman bir 500 iç sunucu hatası üretecektir. Güvenli bir seçenek takip ya php.ini dosyasına belleği artırmak için hosting sormak gerekir

Eğer bir dosyayı okumak için çalışıyorsanız, o PHP bellek alacak. Örneğin, açmak ve bir MP3 dosyasını okumak için çalışıyorsanız (diyelim ki, gibi, $ data = file ("http://mydomain.com/path/sample.mp3") belleğe tüm çekmek için gidiyor .

Nelson anlaşılacağı gibi, aslında bu kadar bellek kullanarak gerekiyorsa maksimum bellek sınırı artırmak için çalışabilirsiniz.