2012-09-04 20 views
11

इस समस्या को हल करने के लिए गर्म और यह क्यों होता है?134217728 बाइट्स की स्वीकृत स्मृति आकार

Zend सर्वर लॉग:

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 538798977 bytes) in C:\Program Files (x86)\Zend\Apache2\htdocs\test\modules\main.php on line 3

फ़ाइल main.php किसी भी त्रुटि का उत्पादन नहीं करता है, अगर यह ब्राउज़र से सीधे मार डाला है। हालांकि, अगर मैं किसी अन्य PHO फ़ाइल से अपने फ़ंक्शंस का उपयोग करता हूं, तो ज़ेंड लॉग उपरोक्त त्रुटि को प्रिंट करता है।

+0

आप स्मृति सीमा को बढ़ाने का प्रयास किया? – Jurgo

+2

128 एमबी इस्तेमाल की गई मेमोरी? यह स्क्रिप्ट * क्या * करता है? – DaveRandom

+4

आपने एक ही बार में 500 मेगाहर्ट्ज रैम आवंटित करने का प्रयास किया? अच्छाई, क्या आपने एक बार में एक बड़े पैमाने पर सीएसवी में पढ़ने की कोशिश की? यदि आपने किया, तो उन्हें एक समय में एक पंक्ति में पढ़ें और उन्हें इस तरह से संसाधित करें। – Fluffeh

उत्तर

13

मुझे भी इस समस्या का सामना करना पड़ा है।

ताकि आपके पेज निष्पादन बंद नहीं होगा निम्न चर बढ़ाएँ:

  • max_input_time
  • memory_limit
  • max_execution_time
+8

... तकनीकी रूप से * गलत * तो नहीं -1 लेकिन शायद एक बुरा सुझाव। मूल त्रुटि इंगित करती है कि आप (शायद) * रास्ता * बहुत अधिक मेमोरी का उपयोग कर रहे हैं - आपके कोड में कुछ गंध है (अनंत लूप?)। इसे अलग-अलग रखने के लिए, यदि आपका पृष्ठ हर बार चलने पर उस मेमोरी का उपभोग करता है, तो आपके मेजबान के लिए उम्मीद है कि आपके पास कई उपयोगकर्ता नहीं हैं :) – Ben

6

इस प्रयास करें:

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

php.net/memory_limit

यह सर्वर की असीमित स्मृति के उपयोग का समय लगेगा।

+24

यह इस तरह की समस्याओं को हल करने का सही तरीका नहीं है –

+2

लेकिन यदि आप सीएलआई मोड चला रहे हैं तो यह बहुत उपयोगी है। –

+0

@ superarts.org और अन्य: PHP के लिए सीएलआई सेटिंग्स बदलने का एक तरीका है। 'Php --ini' टाइप करें और सही फ़ाइल संपादित करें। –

10

या तो php.ini में स्मृति सीमा को बढ़ाने के लिए, या अनुकूलन करने के लिए कोशिश आपके आवेदन से बाहर कोई बड़ी डेटा संरचनाएं (जैसे सरणी)।

किसी भी मामले में, यदि आपका PHP एप्लिकेशन 128 एमबी रैम का उपयोग कर रहा है, तो शायद कुछ गलत हो रहा है।

इसके अलावा, जैसा कि फ्लफफेह ने टिप्पणियों में उल्लेख किया है, आप 500 एमबी रैम का उपयोग करने के लिए पृथ्वी पर क्या कर रहे हैं?

1

इसके अलावा user1427811 करने के लिए आप time_limit और memory_limit से पहले और फ़ाइल डाउनलोड करने के बाद निगरानी कर सकते हैं:

function custom_put_contents($source_url='',$local_path=''){ 

    $time_limit = ini_get('max_execution_time'); 
    $memory_limit = ini_get('memory_limit'); 

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

    $remote_contents=file_get_contents($source_url); 
    $response=file_put_contents($local_path, $remote_contents); 

    set_time_limit($time_limit); 
    ini_set('memory_limit', $memory_limit); 

    return $response; 
} 
संबंधित मुद्दे