2010-11-18 18 views
14

मुझे php.ini में अधिकतम निष्पादन समय सेट के बारे में कुछ संदेह हैं।PHP max_execution_time कैसे काम करता है?

  1. मैं एक प्रक्रिया है जो 2 मिनट में खत्म हो जाएगा है:

    max_execution_time मानते हुए 3 मिनट, निम्नलिखित मामलों पर विचार है।

    लेकिन यह एक लूप में है और इसे 5 बार काम करना चाहिए। तो यह 10 मिनट हो जाता है।

    क्या स्क्रिप्ट टाइमआउट के लिए त्रुटि दिखाए बिना ठीक से चलती है? क्यूं कर?

  2. PHP फ़ंक्शन बस डेटा प्रिंट करता है और इसमें केवल 2 मिनट लगेंगे।

    लेकिन क्वेरी निष्पादन में 5 मिनट लग रहे हैं।

    क्या स्क्रिप्ट बिना त्रुटि के चलती है? क्यूं कर?

  3. मेरी एकल PHP प्रक्रिया में केवल 5 मिनट लगते हैं।

    लेकिन स्क्रिप्ट को कमांड लाइन से कॉल कर रहा हूं।

    क्या यह ठीक से काम करेगा? क्यूं कर?

  4. स्मृति अनुमति और निष्पादन समय से संबंधित कैसे हैं?

    तो एक स्क्रिप्ट के लिए निष्पादन समय बहुत ही उच्च

    है लेकिन यह डेटा

    यह स्मृति को प्रभावित करेगा या नहीं की एक छोटी राशि देता है? क्यूं कर?

मैं जानना चाहता हूं कि आंतरिक रूप से क्या हो रहा है, यही कारण है कि मैं इनसे पूछ रहा हूं। मैं सिर्फ समय सीमा और स्मृति सीमा को नहीं बढ़ाना चाहता हूं।

उत्तर

31

max_execution_time पर नियम अपेक्षाकृत सरल हैं।

  • फ़ाइल का अर्थ होने पर निष्पादन समय गिनने लगता है। अनुरोध तैयार करने से पहले समय की आवश्यकता है, अपलोड की गई फाइलें तैयार करें, वेब सर्वर अपनी चीज़ आदि कर रहा है। निष्पादन समय की ओर गिनती नहीं है।

  • निष्पादन समय डेटाबेस क्वेरी सहित कुल स्क्रिप्ट चलाता है, भले ही यह लूप में चल रहा हो या नहीं। तो पहले और दूसरे मामले में, स्क्रिप्ट एक टाइमआउट त्रुटि के साथ समाप्त हो जाएगी क्योंकि यह max_execution_time का परिभाषित व्यवहार है।

  • बाहरी प्रणाली का उपयोग करते हुए exec() कॉल करता है और इस तरह के विंडोज पर छोड़कर निष्पादन समय की ओर नहीं गिनती करते हैं। (Source) इसका मतलब है कि आप एक बाहरी प्रोग्राम चला सकते हैं जो max_execution_time से अधिक समय लेता है।

  • कमांड लाइन से कहा जाता है, max_execution_time0 पर डिफ़ॉल्ट। (Source) तो तीसरे मामले में, आपकी स्क्रिप्ट त्रुटियों के बिना चलनी चाहिए।

  • निष्पादन समय और स्मृति उपयोग के पास एक-दूसरे के साथ कुछ लेना देना नहीं है। एक स्क्रिप्ट स्मृति सीमा तक पहुंचने के बिना घंटों तक चल सकती है। यदि ऐसा होता है, तो अक्सर एक लूप के कारण जहां चर सेट नहीं होते हैं, और पहले आरक्षित स्मृति ठीक से मुक्त नहीं होती है।

+1

यह आंशिक रूप से डेटाबेस अनुरोधों के बारे में गलत है, मेरी personnal परीक्षण से और [इस उत्तर] (http://stackoverflow.com/a/10027320/1408100) और [इस टिप्पणी] (http: // php। शुद्ध/मैनुअल/fr/function.set समय limit.php # 115,057) –

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