2009-03-06 11 views
11

PHP 5.0.4 में, यदि आप कॉन्फ़िगर-योग्य-मेमोरी-सीमा कॉन्फ़िगर नहीं करते हैं, तो memory_limit निर्देश को अनदेखा किया जाता है। (यह अनुशंसित php.ini फ़ाइल में 8 एम पर सेट है, लेकिन प्रलेखन का कहना है कि इसे अनदेखा किया गया है।) तो उस स्थिति में, क्या प्रति स्क्रिप्ट स्क्रिप्ट मेमोरी सीमा है, या यह केवल सिस्टम द्वारा ही सीमित है?PHP मेमोरी सीमा

मैं पूछता हूं क्योंकि मैं PHP 5.2.8 में अपग्रेड कर रहा हूं, और यह डिफ़ॉल्ट रूप से स्मृति को सीमित करने की अनुमति देता है। तो अब मुझे वास्तव में कुछ उचित मूल्य निर्धारित करना है। अनुशंसित php.ini फ़ाइल अब यह 128 एम पर सेट है, लेकिन मुझे नहीं पता कि अधिक या कम डिफ़ॉल्ट रूप से 5.0.4 की तुलना में किया गया है!

मैं उत्पादन प्रणाली को अपग्रेड कर रहा हूं, इसलिए मैं व्यवहार में किसी भी बड़े बदलाव से बचना चाहता हूं। documentation ("memory_limit" के लिए खोज) इस बिंदु पर बहुत भ्रमित है। यह "डिफ़ॉल्ट" कहता है, लेकिन मुझे नहीं पता कि इसका मतलब कॉन्फ़िगरेशन फ़ाइल में डिफ़ॉल्ट मान सेट है, या डिफ़ॉल्ट मान जो स्मृति उपयोग सीमित होने पर उपयोग करता है।

उत्तर

9

PHP में मेमोरी लिमिटर वैकल्पिक है; यदि आप इसे संकलित समय पर अक्षम करते हैं तो बिल्कुल कोई सीमा नहीं है।

5.0.4 में यह तब तक अक्षम है जब तक आप इसे संकलित समय पर स्पष्ट रूप से नहीं पूछते, कारण यह है कि मेमोरी लिमिटर useless until 5.2 था और यह बहुत सी चीजों को गिनती नहीं थी, जिसमें MySQL कार्यों की तरह चीजें शामिल थीं। यह 5.212 से पर चालू हो गया है, अब उन्होंने गिनना सीखा है।

यदि संदेह है, तो इसे अक्षम करें या सुनिश्चित करें कि आप कॉन्फ़िगरेशन फ़ाइल को नए डिफ़ॉल्ट का उपयोग करने के लिए अद्यतन करते हैं। इसे 8 एमबी पर छोड़कर 5.2.8 तक अपग्रेड करने से लगभग निश्चित रूप से समस्याएं पैदा हो जाएंगी।

4

128 एम बहुत अधिक है। आपको इसकी आवश्यकता हो सकती है लेकिन मुझे आश्चर्य होगा।

बात करने के लिए अधिक, सीमा php.ini में एक वैश्विक डिफ़ॉल्ट पर सेट किया जा सकता है:

memory_limit = 32M 

आप भी इसे लिपियों में ओवरराइड कर सकते हैं:

<?php 
ini_set('memory_limit', '128M'); 
... 

आप शायद मिल जाएगा आपके पास केवल कुछ हद तक स्क्रिप्ट हैं जिन्हें बहुत सारी मेमोरी चाहिए। कुछ आरामदायक मूल्य (परीक्षण के साथ) ढूंढें और फिर उन लोगों के लिए बस इसे जरूरी करें जिनकी आवश्यकता है।

+1

मेरा प्रश्न है: 5.0.4 में, यदि आप memory_limit सेट नहीं करते हैं, तो क्या यह अभी भी एक को लागू करता है? –

+3

+1, PHP का कचरा कलेक्टर एक से अधिक बार टूट गया है। चूंकि टाइमआउट से छुटकारा पाने के लिए इतना लोकप्रिय है, यह जानना महत्वपूर्ण है कि आपका कोड वास्तव में कंप्यूटर पर __doing__ क्या है। –

3

5.2 से पहले PHP में डिफ़ॉल्ट मेमोरी सीमा 8 एमबी थी, इसे PHP 5.2.0 में 16 एमबी के डिफ़ॉल्ट में बढ़ा दिया गया था। यह वर्तमान में 128 एमबी का डिफ़ॉल्ट है।

पूर्व 5.2 संस्करणों के व्यवहार को पुन: पेश करने के लिए, स्पष्ट रूप से स्मृति सीमा को 8MB पर सेट करें।

php.net वेबसाइट पर "संसाधन सीमाएं" के अंतर्गत देखें।

http://us.php.net/ini.core

संपादित

"पीएचपी 5.2.1 करने से पहले, आदेश इस निर्देश का उपयोग करने के लिए कॉन्फ़िगर लाइन में सक्षम करें-स्मृति-सीमा का उपयोग करके संकलन समय पर सक्षम किया जा सकता था "

अपने पुराने सर्वर के संकलन झंडे की जांच करें, अगर आपने इसे सक्षम नहीं किया है तो कोई सीमा लागू नहीं की गई थी।

+1

क्या आप जानते हैं कि 8 एमबी वास्तव में लागू किया गया था या नहीं? Php.ini में उस सेटिंग के लिए यह डिफ़ॉल्ट मान था, लेकिन दस्तावेज़ कहते हैं कि सेटिंग को अनदेखा कर दिया गया था। –

+0

मेरा मतलब यह जवाब देने का मतलब नहीं था, यह एक दुर्घटना थी। – boclodoa

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