Soru PHP: settings memory_limits> 1024M çalışmıyor


Kötü nedenlerden dolayı, bir dizin için 1G'den daha yüksek olan memory_limits'i ayarlamam gerekiyor, ancak örneğin 2048M'yi koyduğumda PHP 5.2.17 üzerinde, sadece php.ini varsayılan değerini (256M) aldım.

PHP bir apache modülü olarak çalışır, phpinfo bize verir (dizin için)

memory_limit    1024M   256M
suhosin.memory_limit    0   0

Apache modülü veya PHP conf nedeniyle bir sınırlama var mı? Sunucunun sadece 4G RAM olduğunu biliyorum, sadece özel bir senaryo.


44
2018-02-14 11:41


Menşei


Şu an aynı durumdayım. Ben çok anlıyorum: "Kötü sebeplerden dolayı"! - Simon Arnold


Cevaplar:


Bellek limitini nasıl ayarlamaya çalışıyorsunuz? phpinfo () mevcut PHP ayrılmış bellek limitini gösterir, bu bir bellek limiti olarak ayarlanmış olan php.ini nedeniyle kullanılabilir olan şeydir

Sunucunuz PHP komutlarını .htaccess aracılığıyla ayarlamayı destekliyorsa, bunu komut dizininizde Apache .htaccess'e yazabiliriz:

php_value memory_limit 2048M

PHP değerlerini ayarlamak için .htaccess komutlarının kapalı olması mümkün olabilir. Sonra bunu PHP kodundan da deneyebilirsiniz:

ini_set('memory_limit', '2048M');

Bu işe yaramazsa ve .htaccess de işe yaramazsa, sunucu yöneticilerine başvurmanız gerekir.


84
2018-02-14 11:46



Ben php_value veya ini_set, aynı sorunu kullanıyorum: eğer 512M ou 1024M'yi ayarlarsam, tamam, 1500M veya 2048M'yi ayarlarsam 256Mo'yu (php.ini'den varsayılan değer) alırım - Cédric Girard
Bu durumda, PHP'nin ellerinden çıkmış gibi görünebilir, tahsis edebileceğiniz maksimum değer veya maksimum 1024M nedir? - kingmaple
4.5G malloc () yapabiliriz. Cevabını anladım mı? - Cédric Girard
Hayır. Hafızayı .htaccess veya ini_set () ile ayarlamaya ilişkin kendi testlerinize dayanarak, denediğin 'yapışan' en yüksek değer nedir? - kingmaple
Suhosin'in bu sunucuda yaptığı bir şey olabilir. Burada bahsedilmiştir: stackoverflow.com/questions/5859994/... - kingmaple


ini_set("memory_limit",-1);

Bu normalde sınırları kaldırmalıdır


21
2018-03-15 00:31



Negatif bir değer (-1) ayarlamak, kullanılan makinenin gerçek bellek kapasitesine bağlı olarak çok fazla yer kaplayabileceği anlamına gelir. - Abel Callejo
Bu gerçek bir üretim ortamında çok kötü bir uygulamadır. - walther
@walther, bunu neden söylüyorsun? Çalışıyor mu, çalışmıyor mu? - pollux1er
Limit iyi bir sebepten dolayı var. Daha uzun bir cevap istiyorsanız, işte hızlı bir tane: stackoverflow.com/a/10151831/1289283 . Her neyse, bir programcı olarak işiniz sadece “işe yaramaz” değil, aynı zamanda kaynaklarınızı olabildiğince etkili kullanmaktır. Koddaki bu gibi sınırların kaldırılması asla iyi bir uygulama değildir. İyi bir uygulama darboğazı bulmak ve düzeltmek. - walther
@Kaymaz: Öyleyse bir akım olarak okuyorsun, hepsi dev bir yığınta değil. - Ryan Parman


Ben PHP betik 4 GB RAM kullanmak için gerekli olan bu aynı sorunu vardı. Nedeni önemli değil. Amaç PHP'de 4 GB'lik bir limit belirlemekti.

İlk fikir kullanmaktı ini_set('memory_limit', '4096M'); ama bunun işe yaramadığını gördüm. Nasıl veya niçin dürüst olacağımı bilmiyorum, ama o zamanlar benim için önemli değildi. 32 GB'lik bir sisteme sahibim, bu mümkün olmalı.

Asgari 1 MB daha az sınırda çalışmanın, benim için işe yarayan bir çözüm olduğunu buldum.

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB

Nov'i Düzenle16: Aslında, daha önce hiç oynamamıştım ama sistemimde, bu değerin benim için tüm hafıza sınırlarını tamamen ortadan kaldırdığına şahit oldum. Sistemimin sağladığı kadar RAM kullanabiliyorum.


16
2017-11-01 17:44



4096mb neden çalışmıyor? Bu benimle 7. php'de oldu. Bu "hata" (hata ise idk) sayfada ne hata olduğunu göstermedi. Ayrıca error_reporting koymuştum. - Phoenix404
Ayrıca bu hatayı sadece 7.1 ile deneyimledim. 4095M'ye ayarladıktan sonra tekrar çalışmaya başladı. Bunun CLI kullanımı için olduğunu varsayarak, 4GB'tan daha büyük belleğe ihtiyaç duyduğunuz durumlarda bunu -1'e ayarlamanız daha iyi olacaktır. - rtd1123


Burada açıklandığı gibi: http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit

Suhosin sana izin vermeyecek komut dosyasının başladığı değerden daha büyük bir değer ayarla.

Eğer suhosin.memory_limit için 2048M daha sonra bellek kullanımınızı artırabilirsiniz.


6
2018-05-31 10:05





XLS dosyasını DB'ye içe aktarırken, bu hatayla da bir sorun yaşadım.

Çözüm oldu ini_set('memory_limit', '2048M'); bu komutu doğrudan sorun olan dosyaya uygulayın.

Örneğin: Phpmyadmin\libraries\PHPExcel\PHPExcel\Worksheet.php


-2
2018-05-09 15:11



Eh, diğer cevap zaten aynı diyor. Cevabınız nasıl yardımcı olur? - John Dvorak