घातक त्रुटि: अधिकतम 30 सेकंड का निष्पादन समय


397

मैं एक ऑनलाइन स्रोत से JSON फ़ाइल डाउनलोड कर रहा हूं और जब यह लूप से चलता है तो मुझे यह त्रुटि मिल रही है:

घातक त्रुटि: 30 सेकंड का अधिकतम निष्पादन समय C: \ wamp \ www \ temp \ fetch.php से अधिक हो गया, लाइन 24 पर


11
60 सेकंड के अधिकतम निष्पादन समय का संभावित डुप्लिकेट जो पहले से ही तीन अन्य का डुप्लिकेट है। कृपया पूछने से पहले खोज फ़ंक्शन का उपयोग करें।
गॉर्डन

"Set_time_limit () फ़ंक्शन और कॉन्फ़िगरेशन निर्देश max_execution_time केवल स्क्रिप्ट के निष्पादन समय को प्रभावित करता है। स्क्रिप्ट के निष्पादन के बाहर होने वाली गतिविधि पर खर्च होने वाला कोई भी समय जैसे सिस्टम कॉल सिस्टम (), स्ट्रीम ऑपरेशन, डेटाबेस क्वेरी, आदि का उपयोग करता है। स्क्रिप्ट चलाने के लिए अधिकतम समय निर्धारित करते समय इसे शामिल नहीं किया गया है। यह विंडोज़ पर सच नहीं है "PHP दस्तावेज़ से
जैकब सेंचेज

जवाबों:


722

आपका लूप अंतहीन हो सकता है। यदि यह नहीं है, तो आप इस तरह अधिकतम निष्पादन समय बढ़ा सकते हैं:

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

तथा

set_time_limit(300);

समय सीमा को अस्थायी रूप से बढ़ाने के लिए इस्तेमाल किया जा सकता है।


95
set_time_limit (300) का उपयोग अस्थायी रूप से समय सीमा बढ़ाने के लिए किया जा सकता है।
ओम

क्या यह केवल उस एक स्क्रिप्ट के लिए सेट है या यह एक ही सर्वर पर इस एक के बाद निष्पादित सभी अन्य स्क्रिप्ट को प्रभावित करेगा?
राव

1
@ राओ हां, यह केवल उस एक स्क्रिप्ट के लिए होगा। सभी लिपियों के लिए इसे बनाने के लिए आपको इसे php.ini फ़ाइल में बदलना होगा। आप set_time_limit (0) भी कर सकते हैं; अगर आप चाहते हैं कि स्क्रिप्ट हमेशा के लिए चले, या लंबे समय तक
हसीब

31
ini_set ('max_execution_time', 0); // कोई सीमा नहीं
जुनैद अटारी

3
@sangam मैं कहूंगा कि यह सबसे अच्छा अभ्यास है, इस सीमा को कम से कम अतिरिक्त बफर की अनुमति देते हुए जितना संभव हो उतना कम रखने के लिए। सुरक्षा कारणों से मैं इसे पूरी तरह से बंद नहीं करना चाहूंगा। इसे उचित तरीके से सेट किया जाना चाहिए। मैं वास्तव में इसे एक मध्यम सर्वर-तनाव-स्तर के तहत मेरी सबसे लंबे समय तक चलने वाली स्क्रिप्ट को दोगुना करने के लिए सेट करता हूं। फिर भी यह हमेशा विफल हो सकता है। तो सबसे अच्छा अभ्यास अलग-अलग समय लेने वाली स्क्रिप्ट के लिए समय-आउट के मुद्दों से निपटने के लिए भी है।
हाफेनक्रिंच

185

मैं एक ही समस्या थी और परम के लिए मान बदलकर इसे हल max_execution_timeमें php.ini, इस तरह:

max_execution_time = 360      ; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
max_input_time = 120          ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M           ; Maximum amount of memory a script may consume (128MB by default)

मुझे उम्मीद है कि यह आपकी मदद कर सकता है।


1
किसी कारण के लिए ini_set काम नहीं कर रहा है लेकिन यह सुनिश्चित करने में मदद करता है!
गबरुजन

php.iniमें पाया जा सकता है /etc/php5/apache2/php.ini.... मैं ubuntu 13.04 का उपयोग कर रहा हूं ...
Enissay

मैं एक ही समस्या जब wamp पर मनोदशा स्थापित कर रहा था, लेकिन php.ini फ़ाइल को कॉन्फ़िगर करके हल किया गया था
मुहम्मद इरफ़ान

1
Php.ini में परिवर्तन के बाद अपाचे को फिर से शुरू करने की आवश्यकता है
spideringweb

[php7] - sudo nano /etc/php/7.0/apache2/php.ini
क्रिस लैंबोरो

46

उपरोक्त सभी उत्तर सही हैं, लेकिन मैं कुछ मामलों में इससे बचने के लिए एक सरल तरीके का उपयोग करता हूं।

इस लिपि को अपनी लिपि की शुरुआत में रखें:

set_time_limit(0);

9
यह बिल्कुल भी अनुशंसित नहीं है
मैं

1
बंद समय सीमा अनंत छोरों से रक्षा नहीं करती है, इसलिए हमेशा एक (अधिक) सीमा निर्धारित करें।
बिमलास

@IamtheMostStupidPerson क्यों नहीं? यदि आप इसे लोकलहोस्ट के रूप में उपयोग करते हैं
फर्नांडो टोरेस

23

मैं वर्डप्रेस 4.0 में अपग्रेड करते समय इस समस्या में भाग गया । डिफ़ॉल्ट रूप से वर्डप्रेस अधिकतम निष्पादन समय को 30 सेकंड तक सीमित करता है।

डिफ़ॉल्ट को ओवर-राइड करने के लिए अपने वर्डप्रेस इंस्टॉलेशन के रूट डायरेक्टरी पर अपनी .htaccess फ़ाइल में निम्न कोड जोड़ें ।

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes

18

Php.ini संपादित करें

इस लाइन का पता लगाएं:

max_execution_time

इसके मान को 300 में बदलें:

max_execution_time = 300

300 का मतलब http अनुरोध के लिए निष्पादन के समय का 5 मिनट है।


16

आपकी स्क्रिप्ट का समय समाप्त हो रहा है। निष्पादन समय को पूरा करने के लिए set_time_limit () फ़ंक्शन पर एक नज़र डालें । या इसे तेज चलाने के लिए स्क्रिप्ट प्रोफाइल करें :)


1
@HarshaMV का अर्थ है यह निर्धारित करने के लिए एक प्रदर्शन प्रोफ़ाइल का उपयोग करना कि स्क्रिप्ट को शुरू करने के लिए धीमा क्यों है, और निष्पादन समय में सुधार करने के लिए अपने कोड का अनुकूलन करें। यह टोंटी क्या है (सीपीयू बनाम डिस्क I / O बनाम नेटवर्क) के आधार पर यह उपयोगी हो सकता है या नहीं भी हो सकता है।
डैन बेहार्ड

12

यदि उपरोक्त सभी ने आपके लिए काम नहीं किया है, तो .htaccessउस निर्देशिका में एक फ़ाइल जोड़ें जहां आपकी स्क्रिप्ट स्थित है और इसे अंदर रखें

<IfModule mod_php5.c>
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>

यह मेरी समस्या को हल करने का तरीका था, न ini_set('max_execution_time', 86400);ही set_time_limit(86400)मेरी समस्या का समाधान किया गया था, लेकिन .htaccess विधि ने किया।


1
यह मेरे मामले में काम करता है। धन्यवाद। G के साथ M को GB में बदलें
Web_Developer

11

हम इस समस्या को 3 अलग-अलग तरीकों से हल कर सकते हैं।

1) php.ini फ़ाइल का उपयोग करना

2) .htaccess फाइल का उपयोग करना

3) Wp-config.php फ़ाइल (Wordpress के लिए) का उपयोग करना


8

आप अपनी स्क्रिप्ट के शीर्ष पर इस पंक्ति को जोड़कर इसे शून्य पर सेट करके प्रतिबंध को हटा सकते हैं:

<?php ini_set('max_execution_time', 0); ?>

7

पथ का अनुसरण करें /etc/php5(your php version)/apache2/php.ini

इसे खोलें और max_execution_timeवांछित का मान सेट करें ।


कुछ होस्टिंग प्रदाताओं पर आपको /home
Isusernameiding

7

हो सकता है कि आप किसी भी चीज़ के लिए जाँच करें जिसे आपने php.ini फ़ाइल के तहत बदला है। उदाहरण के लिए मैं बदल , "intl.default_locale =" के लिए ", intl.default_locale = en_utf8" आदेश "अंतर्राष्ट्रीयकरण विस्तार (Intl)" सक्षम करने के लिए जोड़ने के बिना "विस्तार = php_intl.dll" तो यह एक ही त्रुटि हो गई। इसलिए मैं ऐसी ही गलतियों की जाँच करने का सुझाव देता हूँ।



5

अपने विस्तार के लिए max_execution_timeआप ini_setया तो उपयोग कर सकते हैं या set_time_limit

// Set maximum execution time to 10 seconds this way
ini_set('max_execution_time', 10);
// or this way
set_time_limit(10);

!! लेकिन इस बात का ध्यान रखें कि, दोनों ही कामों को फिर से शुरू करने के लिए टाइम स्क्रिप्ट की गिनती भी शुरू हो चुकी है

sleep(2);
ini_set('max_execution_time', 5);

register_shutdown_function(function(){
    var_dump(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']);
});

for(;;);

//
// var_dump outputs float(7.1981489658356)
//

इसलिए यदि आप सटीक अधिकतम समय सेट करना चाहते हैं, तो स्क्रिप्ट चल सकती है, आपका आदेश बहुत पहले होना चाहिए।

उन दो कार्यों के बीच अंतर हैं

  • set_time_limit यह जानकारी वापस नहीं करता है कि क्या यह सफल था लेकिन यह त्रुटि पर चेतावनी देगा।
  • ini_setसफलता पर पुराना मूल्य लौटाता है, या बिना किसी चेतावनी / त्रुटि के असफलता पर झूठा साबित होता है

5

आप इसे WHM के साथ आसानी से कर सकते हैं। बस मिल गया:

WHM -> सेवा विन्यास -> PHP विन्यास

संपादक> max_execution_time=30

(30 डिफ़ॉल्ट रूप से जो भी आप चाहते हैं उसे बदल दें)


2

मुझे वर्डप्रेस साइट में एक ही समस्या है, मैंने .htaccess फ़ाइल में जोड़ा है, फिर मेरे लिए ठीक काम कर रहा है।

php_value max_execution_time 6000000

0

मैंने अपने मामले में कुछ बदलाव किए हैं: xampp \ phpMyAdmin \ lbooks \ config.default.epp

मैं के लिए खोज की है: $cfg['ExecTimeLimit'] और सही पक्ष पर मूल्य बदल ...

आप राइट हैंड वैल्यू को किसी भी उच्च मान में बदल सकते हैं , जैसे '5000'। और यह काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.