सवाल PHP: सेटिंग्स memory_limits> 1024M काम नहीं करता है


खराब कारणों से मुझे निर्देशिका के लिए 1 जी से अधिक स्मृति_limits सेट करने की आवश्यकता है, लेकिन मेरे PHP 5.2.17 पर लेनी सर्वर पर जब मैं उदाहरण 2048M डालता हूं तो मुझे केवल php.ini डिफ़ॉल्ट मान (256M) मिलता है।

PHP एक अपाचे मॉड्यूल के रूप में चलाता है, phpinfo हमें (निर्देशिका के लिए) देता है

memory_limit    1024M   256M
suhosin.memory_limit    0   0

क्या अपाचे मॉड्यूल, या PHP conf के कारण कोई सीमा है? मुझे पता है कि सर्वर में केवल 4 जी रैम है, यह सिर्फ एक विशेष स्क्रिप्ट है।


44
2018-02-14 11:41


मूल


मैं अभी एक ही स्थिति में हूं। मैं इतना समझता हूं: "बुरे कारणों के लिए"! - Simon Arnold


जवाब:


आप मेमोरी सीमा निर्धारित करने की कोशिश कैसे कर रहे हैं? phpinfo () वर्तमान PHP आरक्षित मेमोरी सीमा दिखाता है, यह php.ini के कारण उपलब्ध है जो स्मृति सीमा के रूप में सेट है

यह आपकी स्क्रिप्ट निर्देशिका में अपाचे। Htaccess को लिखना काम कर सकता है, यदि आपका सर्वर .htaccess के माध्यम से PHP कमांड सेट करने का समर्थन करता है:

php_value memory_limit 2048M

चूंकि यह संभव हो सकता है कि PHP मानों को सेट करने के लिए htaccess आदेश बंद कर दिए गए हैं। फिर आप इसे PHP कोड से भी आजमा सकते हैं:

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

यदि यह काम नहीं करता है और .htaccess भी काम नहीं करता है, तो आपको सर्वर प्रशासकों से संपर्क करने की आवश्यकता है।


84
2018-02-14 11:46



मैं php_value या ini_set का उपयोग करता हूं, वही समस्या: यदि मैं 512 एम या 1024 एम सेट करता हूं, तो ठीक है, अगर मैं 1500 एम या 2048 एम सेट करता हूं, तो मुझे 256 एमओ (php.ini से डिफ़ॉल्ट मान) मिलता है। - Cédric Girard
इस मामले में ऐसा लगता है कि यह PHP के हाथों से बाहर है, अधिकतम मूल्य क्या है जिसे आप आवंटित कर सकते हैं या 1024 एम अधिकतम है? - kingmaple
हम 4.5 जी का एक मॉलोक () कर सकते हैं। क्या मैं आपका जवाब समझ गया हूँ? - Cédric Girard
नहीं, मेरा मतलब है, .htaccess या ini_set () के साथ मेमोरी सेट करने के अपने परीक्षणों के आधार पर, आपके द्वारा किए गए 'स्टिक्स' का उच्चतम मूल्य क्या है? - kingmaple
वैसे यह कुछ ऐसा हो सकता है जो Suhosin उस सर्वर पर करता है। यहां उल्लेख किया गया है: stackoverflow.com/questions/5859994/... - kingmaple


ini_set("memory_limit",-1);

यह सामान्य रूप से सीमा को हटा देना चाहिए


21
2018-03-15 00:31



ऋणात्मक एक मान (-1) सेट करना मतलब है कि यह मशीन की वास्तविक स्मृति क्षमता के आधार पर ज्यादा जगह ले सकता है - Abel Callejo
वास्तविक उत्पादन वातावरण में यह एक बहुत ही खराब प्रथा है। - walther
@walther, तुम ऐसा क्यों कहते हो? क्या यह काम करता है या नहीं? - pollux1er
एक अच्छे कारण के लिए सीमा मौजूद है। यदि आप एक लंबा जवाब चाहते हैं, तो यहां एक त्वरित है: stackoverflow.com/a/10151831/1289283 । वैसे भी, एक प्रोग्रामर के रूप में आपका काम न केवल "इसे काम करना" है, बल्कि अपने संसाधनों को यथासंभव प्रभावी रूप से उपयोग करना है। इस तरह के कोड में सीमा को हटाने का कोई अच्छा अभ्यास नहीं है। एक अच्छा अभ्यास बाधा को ढूंढना और इसे ठीक करना है। - walther
@ कायमज़: तो आप इसे एक धारा के रूप में पढ़ते हैं, सभी एक विशाल खंड में नहीं। - Ryan Parman


मेरे पास यही समस्या थी जहां मुझे 4 जीबी रैम का उपयोग करने के लिए मेरी PHP स्क्रिप्ट चाहिए। कारण कोई फर्क नहीं पड़ता। लक्ष्य PHP में 4 जीबी सीमा निर्धारित करना था।

प्रारंभिक विचार का उपयोग करना था ini_set('memory_limit', '4096M'); लेकिन मैंने पाया कि यह काम नहीं करता है। मुझे नहीं पता कि ईमानदार कैसे या क्यों होना चाहिए, लेकिन उस समय मेरे लिए यह महत्वपूर्ण नहीं था। मैं 32 जीबी रैम के साथ एक सिस्टम पर हूं, इसे संभव होना चाहिए।

मैंने पाया कि 1 एमबी कम से कम एक सीमा निर्धारित करने के लिए, यह एक समाधान है जो मेरे लिए काम करता है।

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

नवंबर '16 संपादित करें: वास्तव में, मैंने पहले कभी इसके साथ कभी नहीं खेला है लेकिन मैंने अपने सिस्टम पर ध्यान दिया है कि यह मान मेरे लिए सभी मेमोरी सीमाओं को पूरी तरह से हटा देता है। मैं जितनी रैम का उपयोग कर सकता हूं क्योंकि मेरी प्रणाली संभवतः प्रदान करती है।


16
2017-11-01 17:44



क्या आपको 4096 एमबी काम नहीं कर रहा है? यह मेरे साथ php 7 पर हुआ। यह "बग" (आईडीक अगर यह बग है) पृष्ठ पर कोई भी चीज़ नहीं दिखाती है और न ही त्रुटि। मैंने error_reporting भी डाल दिया है। - Phoenix404
मैंने अभी भी इस बग को php 7.1 के साथ अनुभव किया है। जैसे ही मैंने इसे 40 9 5 एम पर सेट किया, फिर से यह फिर से काम करना शुरू कर दिया। मान लीजिए कि यह सीएलआई उपयोग के लिए है, शायद यह बेहतर होगा कि इसे केवल -1 में सेट करें जहां आपको 4 जीबी से अधिक मेमोरी चाहिए। - rtd1123


जैसा कि यहां वर्णन किया गया है: http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit

सुहोसिन आपको नहीं जाने देगा स्क्रिप्ट के साथ शुरू होने वाले मूल्य से अधिक मूल्य निर्धारित करें

यदि आप सेट करते हैं suhosin.memory_limit सेवा मेरे 2048M तो आप अपने मेमोरी उपयोग को बढ़ाने में सक्षम होंगे।


6
2018-05-31 10:05





डीबी को एक्सएलएस फाइल आयात करने के साथ, मुझे इन त्रुटियों में भी समस्या थी।

समाधान था ini_set('memory_limit', '2048M'); इस आदेश को सीधे फाइल में लागू करें जहां समस्या है।

उदाहरण के लिए: Phpmyadmin\libraries\PHPExcel\PHPExcel\Worksheet.php


-2
2018-05-09 15:11



खैर, दूसरा जवाब पहले से ही वही कहता है। आपका उत्तर कैसे सहायक है? - John Dvorak