2009-12-30 4 views
6

, मेरी मेरी php लिपियों में से एक php.ini स्मृति सीमा या ini_set अनदेखी कर रहे हैं की सीमा।Php CLI स्क्रिप्ट अनदेखी memory_limit, बहुत कम संख्या में दुर्घटनाग्रस्त से किसी कारण से

जब मैं एक print_r (ini_get_all) यह वैश्विक स्मृति सीमा (उस बात के लिए और स्थानीय) 100M करने के लिए सेट से पता चलता है जब मेरी स्क्रिप्ट गंभीर त्रुटि में मर जाता है कार्य करें: स्मृति समाप्त (आवंटित 24,714,304) (571 बाइट्स आवंटित करने के लिए करने की कोशिश की)

इस निदान पर कोई सुझाव दिए गए? सर्वर में 8gigs स्मृति है और इससे पहले कभी इस स्क्रिप्ट को चलाने में समस्याएं नहीं थीं।

इस डिबगिंग पर कोई सुझाव दिए गए?

धन्यवाद!

उत्तर

5

इस का सबसे आम कारण है कि आम तौर CLI पीएचपी बाइनरी एक अलग php.ini फ़ाइल उपयोग कर रहा है आपकी अपेक्षा से है। यह user permissions, या PHP के स्थापित संस्करणों के लिए बस अलग-अलग डिफ़ॉल्ट php.ini फ़ाइलों के कारण हो सकता है। हालांकि, ऐसा लगता है कि आपने इसे थोड़ा सा प्रोफाइल किया है और आपकी स्क्रिप्ट के अंदर आपकी मेमोरी सीमा सही हो सकती है।

उस मामले में, यह प्रक्रियाओं है कि आपके ऑपरेटिंग सिस्टम द्वारा लगाया गया है, जिस स्थिति में आप यह पता लगाने की जहां लगाने से आता होगा पर एक कठिन स्मृति सीमा नहीं है कि बहुत संभव है।

मैं this thread पर एक नज़र लेने के सुझाव देते हैं, के रूप में है कि पोस्टर बहुत अपनी स्थिति के लिए कुछ इसी तरह के माध्यम से चला गया।

+0

आप सही हो सकते हैं, प्रभाव में एक कठिन सीमा हो सकती है। मुझे कोई संकेत नहीं है कि उसे कैसे ढूंढें। शायद मैं सर्वर गलती पर पूछूंगा! – james

+0

आप एक स्मार्ट व्यक्ति हैं मैंने बैश मेमोरी सीमा के बारे में कुछ शोध किया है ulimit -v, जो मेरी याददाश्त को सीमित करता है !!! – james

+0

अच्छा, खुशी है कि आपने इसे पाया। – zombat

0

छोटा और प्रभावी

ini_set('memory_limit', -1); 

मामले में आप डिबगिंग

+0

मुझे लगता है कि वह पहले से ही उस बिंदु से पहले है। उनकी आईएनआई सेटिंग्स पहले से ही 100 मीटर पर हैं। –

+0

अच्छी तरह से मैंने ऐसा किया है लेकिन यह काम नहीं किया है। असल में अगर मैं अपने phpinfo() को प्रिंट करता हूं तो यह बहुत अधिक मेमोरी सीमा दिखाएगा, और जब मैं ini_get_all() प्रिंट करता हूं तो कोई मेमोरी सीमा परिवर्तन दिखाया जाता है। – james

5

मेरी प्रक्रियाओं के लिए आभासी स्मृति कठिन सीमित किया जा रहा था (भी एक बहुत कम संख्या) छोड़ना चाहते।

एक bash खोल मैं ऐसा किया से:

ulimit -v (memory_in_bytes, कोई कोष्ठकों)

यह मेरी समस्या तय। भगवान मैं stackoverflow प्यार करता हूँ

संबंधित मुद्दे