यह त्रुटि संदेश प्रस्तुत किया जा रहा है, कोई सुझाव?
33554432 बाइट्स की अनुमत मेमोरी का आकार php में (43148176 बाइट्स आवंटित करने की कोशिश की गई)
यह त्रुटि संदेश प्रस्तुत किया जा रहा है, कोई सुझाव?
33554432 बाइट्स की अनुमत मेमोरी का आकार php में (43148176 बाइट्स आवंटित करने की कोशिश की गई)
जवाबों:
आखिर में मुझे जवाब मिला:
अपनी फ़ाइल में त्रुटि होने से पहले बस इस पंक्ति को नीचे जोड़ें
ini_set('memory_limit', '-1');
यह सर्वर का असीमित मेमोरी उपयोग करेगा, यह ठीक काम कर रहा है।
सुझाव मित्र देने के लिए धन्यवाद।
UNLIMITED
।
साझा होस्टिंग पर सीमा बढ़ाने के लिए यहां दो सरल तरीके दिए गए हैं:
यदि आपकी PHP.ini फ़ाइल तक पहुँच है, तो लाइन को PHP.ini में बदलें। यदि आपकी लाइन 32M 64M आज़माती है:
memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)
यदि आपके पास PHP.ini तक पहुंच नहीं है, तो इसे एक .htaccess फ़ाइल में जोड़ने का प्रयास करें:
php_value memory_limit 64M
आपकी स्क्रिप्ट बहुत अधिक मेमोरी का उपयोग कर रही है। यह अक्सर PHP में हो सकता है यदि आपके पास एक लूप है जो नियंत्रण से बाहर चला गया है और आप लूप के प्रत्येक पास पर ऑब्जेक्ट बना रहे हैं या सरणियों को जोड़ रहे हैं।
अनंत छोरों के लिए जाँच करें।
यदि यह समस्या नहीं है, तो कोशिश करें और PHP को उन वस्तुओं को नष्ट करके मदद करें, जिन्हें आप उन्हें समाप्त करने के साथ समाप्त कर रहे हैं। जैसे।$OldVar = null;
कोड की जाँच करें जहाँ त्रुटि वास्तव में भी होती है। क्या आप उम्मीद करेंगे कि स्मृति को भारी मात्रा में आवंटन किया जाए? यदि नहीं, तो कोशिश करें और पता करें कि क्या गलत हुआ है ...
करते हुए :
ini_set('memory_limit', '-1');
कभी अच्छा नहीं होता। यदि आप एक बहुत बड़ी फ़ाइल पढ़ना चाहते हैं, तो इसे थोड़ा-थोड़ा करके कॉपी करना सबसे अच्छा अभ्यास है। सर्वोत्तम अभ्यास के लिए निम्न कोड का प्रयास करें।
$path = 'path_to_file_.txt';
$file = fopen($path, 'r');
$len = 1024; // 1MB is reasonable for me. You can choose anything though, but do not make it too big
$output = fread( $file, $len );
while (!feof($file)) {
$output .= fread( $file, $len );
}
fclose($file);
echo 'Output is: ' . $output;
while
लूप के बाद फाइल हैंडलर को बंद करना अच्छा है :fclose($file)
दुर्भाग्य से PHP में प्रोग्राम करना एक तरह से आसान है जो आपको एहसास की तुलना में तेजी से मेमोरी की खपत करता है। संदर्भों का उपयोग करने के बजाय तार, सरणियों और वस्तुओं की नकल करना, हालांकि PHP 5 की तुलना में PHP 5 स्वचालित रूप से ऐसा करने वाला है, लेकिन सबसे छोटी तार्किक इकाई को संसाधित करने की तुलना में कई चरणों में आपके डेटा को संपूर्णता में सेट करना भी बेकार है। समय पर। क्लासिक उदाहरण एक डेटाबेस से बड़े परिणाम के साथ काम कर रहा है: अधिकांश प्रोग्रामर पूरे परिणाम को एक सरणी में लाते हैं और फिर इसके साथ एक या अधिक बार लूप करते हैं foreach()
। while()
एक बार में एक पंक्ति लाने और संसाधित करने के लिए लूप का उपयोग करना बहुत अधिक मेमोरी कुशल है । यही बात किसी फ़ाइल को संसाधित करने पर लागू होती है।
यदि आप बड़ी फ़ाइलों को पढ़ना चाहते हैं, तो आपको उन्हें एक साथ पढ़ने के बजाय थोड़ा सा पढ़ना चाहिए।
यह सरल गणित है: यदि आप एक बार में 1 एमबी बड़ी फ़ाइल पढ़ते हैं, तो डेटा को रखने के लिए कम से कम 1 एमबी मेमोरी की आवश्यकता होती है।
तो आप उन्हें बिट का उपयोग करके थोड़ा पढ़ना चाहिए fopen
& fread
।
$fh = fopen($folder.'/'.$filename, "rb") or die(); $buffer = 1024*1024; while (!feof($fh)) { print(fread($fh, $buffer)); flush(); } fclose($fh);
मुझे एक ही समस्या का सामना करना पड़ा है php7.2 में लार्वा 5.6 है। मैं memory_limit = 128M
अपने अनुप्रयोगों की मांग के अनुसार php.ini में केवल चर की मात्रा बढ़ाता हूं। यह 256M / 512M / 1048M हो सकता है ..... अब यह ठीक काम करता है।
मुझे भी यही समस्या हो रही थी, phpinfo.ini, php.ini या .htaccess फाइल्स को कोई फायदा नहीं हुआ। अंत में मैंने कुछ php फाइलों को देखा है, उन्हें खोला और मेमोरी के लिए अंदर कोड्स की जाँच की। अंत में यह समाधान वही था जो मैं बाहर आया था और इसने मेरे लिए काम किया। मैं वर्डप्रेस का उपयोग कर रहा था, इसलिए यह समाधान केवल वर्डप्रेस मेमोरी साइज लिमिट समस्या के लिए काम कर सकता है। मेरा समाधान, डिफ़ॉल्ट / constants.php फ़ाइल को / public_html / wp- folder में खोलें । कोड संपादक के साथ उस फ़ाइल को खोलें, और wp_initial_constants
स्कोप के तहत मेमोरी सेटिंग्स ढूंढें , या "मेमोरी" शब्द खोजने के लिए इसे Ctrl + F करें। वहाँ तुम आओगे WP_MEMORY_LIMIT
और WP_MAX_MEMORY_LIMIT
। बस इसे बढ़ाएं, यह 64 एमबी था मेरे मामले में, मैंने इसे बढ़ाकर 128 एमबी और फिर 200 एमबी कर दिया।
// Define memory limits.
if ( ! defined( 'WP_MEMORY_LIMIT' ) ) {
if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) {
define( 'WP_MEMORY_LIMIT', $current_limit );
} elseif ( is_multisite() ) {
define( 'WP_MEMORY_LIMIT', '200M' );
} else {
define( 'WP_MEMORY_LIMIT', '128M' );
}
}
if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {
if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) {
define( 'WP_MAX_MEMORY_LIMIT', $current_limit );
} elseif ( -1 === $current_limit_int || $current_limit_int > 268435456 /* = 256M */ ) {
define( 'WP_MAX_MEMORY_LIMIT', $current_limit );
} else {
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
}
}
Btw, कृपया निम्न कोड न करें, क्योंकि यह बुरा अभ्यास है:
ini_set('memory_limit', '-1');
wp-config.php
इसके बजाय उन सीमाओं को जोड़ सकते हैं , जहां वे भविष्य के वर्डप्रेस अपडेट द्वारा अधिलेखित नहीं होंगे। इसके अलावा, कुछ सुरक्षा प्लगइन्स (जैसे WordFence, उदाहरण के लिए) शिकायत करेंगे कि क्या 'कोर' वर्डप्रेस फ़ाइलों को बदल दिया गया है ...
wp-config.php
। और (वहाँ दो लाइनें जोड़ने मैं करें.ई. define( 'WP_MEMORY_LIMIT', '200M' );
और define( 'WP_MAX_MEMORY_LIMIT', '256M' );
। 'कोर' WP (यानी, के अंतर्गत सब कुछ पर फ़ाइलों के विपरीत wp-includes
) है, जो WP उन्नयन द्वारा ओवरराइट हो जाएगा, wp-config.php
नहीं होगा - यह बिल्कुल के लिए है WP स्थिरांक को ओवरराइड करने का सटीक उद्देश्य!
-1
कम-चलने वाली प्रक्रियाओं के लिए ठीक है। उदाहरण के लिए एक php बिल्डर कंटेनर जो इकाई परीक्षण या कंपोजर इंस्टॉल / आदि को चलाने के लिए उपयोग किया जाता है। बस अपनी उत्पादन साइट को इस तरह से सेट न करें।
आप स्क्रिप्ट में सभी कोड के ऊपर निम्न पंक्ति को निष्पादित करके php स्क्रिप्ट को दी गई मेमोरी बढ़ा सकते हैं:
ini_set('memory_limit','-1'); // enabled the full memory available.
और स्क्रिप्ट में अवांछित चरों को भी आबंटित करता है।
इस php लाइब्रेरी की जाँच करें: PHP के साथ मुफ्त मेमोरी
मैं कई उत्तरों को देखता हूं कि एक स्क्रिप्ट को दी गई स्मृति की मात्रा को बढ़ाने की कोशिश करें, जिसमें इसकी जगह है लेकिन अधिक बार ऐसा नहीं है कि इसका मतलब है कि कुछ मात्रा या आकार की अप्रत्याशित मात्रा के कारण स्मृति के साथ बहुत उदार है। जाहिर है यदि आपकी स्क्रिप्ट की लेखक आपकी दया पर लेखक की दया नहीं है जब तक कि आपकी भावना महत्वाकांक्षी न हो :) PHP डॉक्स का कहना है कि स्मृति मुद्दे " खराब लिखी गई स्क्रिप्ट " के कारण हैं
यह उल्लेख किया जाना चाहिए कि ini_set('memory_limit', '-1');
(कोई सीमा नहीं) सर्वर अस्थिरता का कारण बन सकता है 0 bytes free = bad things
। इसके बजाय, आपकी स्क्रिप्ट क्या करने की कोशिश कर रही है और एक मशीन पर उपलब्ध मेमोरी की मात्रा से एक उचित संतुलन खोजें।
एक बेहतर दृष्टिकोण: यदि आप स्क्रिप्ट के लेखक हैं (या महत्वाकांक्षी) तो आप ऐसे मेमोरी मुद्दों को xdebug के साथ डीबग कर सकते हैं । नवीनतम संस्करण (2.6.0 - 2018-01-29 को जारी किया गया) मेमोरी प्रोफाइलिंग को वापस लाया गया जो आपको दिखाता है कि फ़ंक्शन कॉल क्या बड़ी मात्रा में मेमोरी का उपभोग कर रहे हैं। यह स्क्रिप्ट में उन मुद्दों को उजागर करता है जो अन्यथा खोजना मुश्किल है। आमतौर पर, अक्षमताएं एक लूप में होती हैं जो उस मात्रा की अपेक्षा नहीं कर रही है जो उसे प्राप्त हो रही है, लेकिन प्रत्येक मामले को पाठक को अभ्यास के रूप में छोड़ दिया जाएगा :)
Xdebug प्रलेखन उपयोगी है, लेकिन यह 3 चरणों करने पर निर्भर करता:
apt-get
और yum
आदिxdebug.profiler_enable = 1
,xdebug.profiler_output_dir = /where/ever/
यदि आप किसी फ़ाइल को पढ़ने की कोशिश कर रहे हैं, तो यह PHP में मेमोरी लेगा। उदाहरण के लिए, यदि आप एक एमपी 3 फ़ाइल को खोलने और पढ़ने की कोशिश कर रहे हैं (जैसे, कहते हैं, $ डेटा = फ़ाइल (" http://mydomain.com/path/sample.mp3 ") तो यह सब स्मृति में खींच जा रहा है ।
जैसा कि नेल्सन सुझाव देते हैं, आप अपनी अधिकतम मेमोरी सीमा को बढ़ाने के लिए काम कर सकते हैं यदि आपको वास्तव में इस मेमोरी का उपयोग करने की आवश्यकता है।
हमारे पास एक समान स्थिति थी और हमने जवाब ini_set ('memory_limit', '-1') के शीर्ष पर दिया था; और सब कुछ ठीक काम किया, संकुचित चित्र फ़ाइलों को KB से 1MB से अधिक।
यदि आप साझा होस्टिंग का उपयोग कर रहे हैं, तो आप php आकार सीमा में वेतन वृद्धि लागू नहीं कर पाएंगे।
बस अपने cpanel में जाएं और अपने php वर्जन को 7.1 और उससे अधिक पर अपग्रेड करें फिर आप जाने के लिए अच्छे हैं।
मैंने अपनी होस्टिंग को नवीनीकृत नहीं किया था और डेटाबेस केवल-पढ़ने के लिए था। जूमला को सत्र लिखने की जरूरत थी और वह ऐसा नहीं कर सका।
मैं एक ही मुद्दा था जो कमांड लाइन में php चल रहा था। हाल ही में, मैंने php.ini फ़ाइल में परिवर्तन किया था और php.ini को बदलते समय एक गलती की थी
यह php7.0 के लिए है
php.ini के लिए रास्ता जहाँ मैंने गलती की:
/etc/php/7.0/cli/php.ini
मैं निर्धारित किया था memory_limit = 256
(जो साधन 256 bytes
)
के बजाय memory_limit = 256M
(जो साधन 256 Mega bytes
)।
; एक स्क्रिप्ट में अधिकतम मात्रा में मेमोरी (128 एमबी) की खपत हो सकती है
; http://php.net/memory-limit
memory_limit = 128M
एक बार जब मैंने इसे ठीक कर लिया, तो मेरी प्रक्रिया ठीक चलने लगी।
इस कमांड को अपने Magento रूट डायरेक्टरी में चलाएं php -d memory_limit=4G bin/magento
यदि आप लार्वा का उपयोग कर रहे हैं तो इस तरीके का उपयोग करें
public function getClientsListApi(Request $request){
print_r($request->all()); //for all request
print_r($request->name); //for all name
}
के बजाय
public function getClientsListApi(Request $request){
print_r($request); // it show error as above mention
}