Php में निष्पादन टाइमआउट कैसे बढ़ाएं?


101

लेन-देन का समय कैसे बढ़ाया जाए? मैं वीडियो अपलोड करना चाहता हूं, लेकिन बड़े आकार के वीडियो अपलोड नहीं किए गए हैं?

यह त्रुटि फेंकता है The process *** exceeded the timeout of 60 seconds.


1
"लेनदेन टाइमआउट" को परिभाषित करें। क्या काम नहीं करता है?
पक्के

1
आपको क्या लगता है कि इसका "लेन-देन" टाइमआउट क्यों है?
आपका कॉमन सेंस

लघु वीडियो सफलतापूर्वक अपलोड किए गए। लेकिन लंबे वीडियो अपलोड नहीं किए गए, मुझे लगता है कि समय समाप्त हो गया है।
आमिर

ini_set ( 'post_max_size', '200M'); ini_set ( 'upload_max_filesize', '200M'); ini_set ( 'max_execution_time', '200M'); ini_set ( 'max_input_time', '200M'); ini_set ( 'memory_limit', '200M'); set_time_limit (65536);
आमिर

1
फ़ाइल को अपलोड करने से पहले विभाजित करना बेहतर है। कई ऐप हैं जिनका इस्तेमाल किया जा सकता है। मुझे प्लूपॉल्ड पसंद है।
बक्सी

जवाबों:


127

आपको अपने php.ini में कुछ सेटिंग बदलने की जरूरत है:

upload_max_filesize = 2M 
;or whatever size you want

max_execution_time = 60
; also, higher if you must - sets the maximum time in seconds

क्या आपका PHP.ini स्थित है, आपके पर्यावरण, अधिक जानकारी पर निर्भर करता है: http://php.net/manual/en/ini.list.pp


क्षमा करें, मुझे इससे कोई मतलब नहीं है कि आपका क्या मतलब है :(
हेन्स

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

क्या मैं htaccess फ़ाइल में upload_max_filesize और max_execution_time बदल सकता हूं?
आमिर

2
@ कोल, मैं असहमत हूं, वह मक्खी पर बदलाव करना चाहता है न कि पूरे आवेदन पर, इसलिए वह पूछता है कि वह ऐसा कैसे कर सकता है। और यहां तक ​​कि अगर उससे पूछा जाए कि वह php.in में कुछ सामान कैसे बदल सकता है, तो यह एक नौसिखिया सवाल हो सकता है, लेकिन एक कानूनी सवाल सभी के लिए समान है।
हनीस

1
@IulianOnofrei ठीक है, बस उस बिंदु को इंगित करने की आवश्यकता महसूस होती है: डी, ​​लेकिन शायद अगर आपको नहीं पता कि इसे देखने के लिए अभी भी क्या अच्छा है ... "जो लोग इतिहास से नहीं सीख सकते हैं वे इसे दोहराने के लिए बर्बाद हैं" और वह सब …
हनीस

56

आपको रनटाइम के दौरान भी ऐसा करने में सक्षम होना चाहिए

set_time_limit(100);

http://php.net/manual/en/function.set-time-limit.php

या आपके vhost-config में

php_admin_value max_execution_time 10000

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

ps: मत भूलो post_max_size और upload_max_filesize के बारे में (पहले से बताए गए जवाब की तरह)


यदि आप इसे सेट करते हैं तो नींद को नजरअंदाज कर दिया जाएगा
स्नेक आईज

20

हेंस के उत्तर को पूरा करने के लिए।

आपको अपने php.ini में कुछ सेटिंग बदलने की जरूरत है:

upload_max_filesize = 2M 
;or whatever size you want

max_execution_time = 60
; also, higher if you must

यदि कोई व्यक्ति असीमित में रखना चाहता है (मुझे नहीं पता कि क्यों लेकिन यदि आप चाहते हैं), तो आप समय को 0 पर सेट कर सकते हैं:

आपको अपने php.ini में कुछ सेटिंग बदलने की जरूरत है:

upload_max_filesize = 0 

max_execution_time = 0

और अगर आप नहीं जानते कि आपका php.ini कहां है। आप अपने सर्वर में एक फ़ाइल "name.php" कर सकते हैं और डाल सकते हैं:

<?php phpinfo(); ?>

और अपनी वेबसाइट पर, आप अपने php.ini का कॉन्फिगर देख सकते हैं और यह चिन्हित किया गया है कि यह कहाँ है।

9 जनवरी 2015 को संपादित करें:

यदि आप अपने php.ini का उपयोग नहीं कर सकते हैं, तो आपके पास दो और विकल्प हैं।

आप इस लाइन को सीधे अपनी "name.php" फ़ाइल में सेट कर सकते हैं, लेकिन मुझे इस विकल्प के लिए upload_max_filesize नहीं चाहिए:

set_time_limit(0);

या ".htaccess" में

php_value upload_max_filesize 0
php_value max_execution_time 0

9

यदि आपको जो करने की आवश्यकता है वह केवल 1 या 2 पृष्ठों के लिए विशिष्ट है, तो मैं set_time_limit का उपयोग करने का सुझाव देता हूं ताकि यह पूरे एप्लिकेशन को प्रभावित न करे।

set_time_limit(some_values);

लेकिन संभोग के दौरान ये 2 मान (post_max_size & upload_max_filesize) जांच के अधीन हैं।

आप या तो ini_set फ़ंक्शन के माध्यम से इसे सेट कर सकते हैं

ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');

या सीधे php.ini फ़ाइल में हेंस द्वारा ऊपर की प्रतिक्रिया की तरह, या यहां तक ​​कि नीचे की तरह iin .htaccess सेट करें

php_value upload_max_filesize 2M
php_value post_max_size 20M

5

उपरोक्त उत्तरों के अतिरिक्त, आप set_time_limit()फ़ंक्शन का उपयोग कर सकते हैं :

http://php.net/manual/en/function.set-time-limit.php

0एक तर्क के रूप में गुजरना आपकी स्क्रिप्ट को बिना किसी समय सीमा के संचालित करेगा।


set_time_limit () का फ़ाइल अपलोड के साथ कोई लेना-देना नहीं है
आपका कॉमन सेंस

1
यह सटीक नहीं है कि कर्नल श्रापेल। यूनिक्स वातावरण पर अधिकतम-निष्पादन समय की तुलना php-thread द्वारा उपयोग किए जाने वाले संचयी CPU-time से की जाती है, विंडोज़ सिस्टम पर निरपेक्ष समय का उपयोग किया जाता है। अपलोड करना ज्यादातर "निष्क्रिय-समय" (IO-Wait) है। लेकिन जैसा कि आप देखते हैं कि अपलोड बंद हो सकता है जब यह बहुत लंबा होता है भले ही।
बजे क्रिस्टोफ स्ट्रसेन

4

यदि आप Microsoft IIS सर्वर का उपयोग करते हैं, तो दूसरों द्वारा उल्लिखित php.ini सेटिंग्स के अलावा, आपको IIS सर्वर प्रबंधक में PHP FastCGI एप्लिकेशन के लिए निष्पादन टाइमआउट सेटिंग्स बढ़ाने की आवश्यकता हो सकती है:

चरण 1) IIS सर्वर प्रबंधक खोलें (आमतौर पर प्रारंभ मेनू में सर्वर प्रबंधक के तहत , फिर उपकरण / इंटरनेट सूचना सेवा (IIS) प्रबंधक )।

चरण 2) मुख्य कनेक्शन पर क्लिक करें (किसी विशेष डोमेन के लिए विशिष्ट नहीं)।

चरण 3) IIS अनुभाग के तहत , FastCGI सेटिंग्स (नीचे दिखाया गया है) ढूंढें ।

यहां छवि विवरण दर्ज करें

चरण 4) उसमें, PHP एप्लिकेशन पर राइट-क्लिक करें और संपादित करें ... का चयन करें

चरण 5) टाइमआउट की जाँच करें (नीचे दिखाया गया है)।

यहां छवि विवरण दर्ज करें

मेरे मामले में, यहां डिफ़ॉल्ट टाइमआउट 70 और 90 सेकंड थे; पहले जो PHP स्क्रिप्ट पर 500 आंतरिक सर्वर त्रुटि पैदा कर रहा था जो 70 सेकंड से अधिक समय तक रहता था।


3

आपके पास एक टाइपो था: ini_set ('max_input_time', '200M') - मान सेट को एक int होने की आवश्यकता है, जैसे ini_set ('max_input_time', '200')


2

मुझे पता है कि आप विशेष रूप से PHP टाइमआउट के बारे में पूछ रहे हैं, लेकिन किसी और ने जो उल्लेख किया है ऐसा लगता है कि वेबसर्वर पर एक टाइमआउट भी हो सकता है और यह PHP टाइमआउट के समान दिख सकता है।

तो अगर आपने कोशिश की है:

  1. Php.ini में एक पंक्ति जोड़कर टाइमआउट बढ़ाना: max_execution_time = {सेकंड की संख्या यानी 60 से एक मिनट के लिए}
  2. अपनी स्क्रिप्ट में समय-सीमा बढ़ाकर स्वयं को जोड़ते हैं: ini_set ('max_execution_time', '{सेकंड की संख्या अर्थात 60 एक मिनट के लिए}');

और आपने phpinfo () फ़ंक्शन के साथ जांच की है कि max_execution_time वास्तव में बढ़ गया है, तो आप इस .htaccess को जोड़ने की कोशिश करना चाहते हैं जो सुनिश्चित करेगा कि Apache खुद ही समय नहीं निकालती है:

RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]

यहाँ अधिक जानकारी: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/


2

पहले php.iniफ़ाइल पथ की जाँच करें phpinfo(); और फिर बदल दिया PHP.INIparams:

upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30

अपाचे को फिर से शुरू किया

set_time_limit(0); // safe_mode is off

ini_set('max_execution_time', 500); //500 seconds

नोट : आप php.iniलिनक्स में खोजने के लिए कमांड का भी उपयोग कर सकते हैं

locate `php.ini`

1

यदि आप php.ini (उदाहरण के लिए अपने सर्वर पर) को संपादित नहीं कर सकते हैं, तो आप अपने php कोड के भीतर से php.ini मापदंडों को बदलने का प्रयास कर सकते हैं। प्रयत्न:

ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');

यदि वह काम नहीं करता है, तो 'set_time_limit' को भी उसी तरह सेट करने का प्रयास करें, इससे आगे मैं कहूंगा कि आपका एकमात्र विकल्प अपने मेजबान से संपर्क करना है। सुरक्षित मोड में रहते हुए इन सेटिंग्स को संशोधित नहीं किया जा सकता है।


3
हेंस ने मुझे पोस्ट करने से पहले एक मिनट का समय दिया, और सही ढंग से बताते हैं कि set_time_limit () को ini_set द्वारा सेट नहीं किया जाना चाहिए, जैसा कि इस उत्तर में कहा गया है, लेकिन सेकंड को ब्रैकेट में रखकर। वोट पड़े हैं।
जॉन

1

यदि आप सुरक्षित मोड हैं तो टेस्ट करें - यदि नहीं - जो आप चाहते हैं, उसके लिए समय सीमा (स्थानीय मान) निर्धारित करें:

if(!ini_get('safe_mode')){

    echo "safe mode off";
    set_time_limit(180);// seconds

    phpinfo();// see 'max_execution_time'
}

* यदि सुरक्षित मोड 'ऑन' है तो आप इस तरह से समय सीमा निर्धारित नहीं कर सकते।


1

वैकल्पिक: यदि आप php.ini के बारे में कॉन्फिगर करते हैं लेकिन फिर भी अपलोड नहीं कर सकते हैं

-यह त्रुटि कोड की जाँच करने के लिए php फ़ंक्शन है

$error_type = [];
$error_type[0] = "There is no error";
$error_type[1] = "The uploaded file exceeds the upload_max_filesize directive in php.ini.";
$error_type[2] = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
$error_type[3] = "The uploaded file was only partially uploaded.";
$error_type[4] = "No file was uploaded.";
//$error_type["5"] = "";
$error_type[6] = "Missing a temporary folder. Introduced in PHP 5.0.3.";
$error_type[7] = "Failed to write file to disk. Introduced in PHP 5.1.0.";
$error_type[8] = "A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
//------------------------------
//--> show msg error.
$status_code = $_FILES["uploadfile"]["error"];
if($status_code != 0){
    echo $error_type[$status_code];
    exit;
}

0

आप अपनी .htaccessफ़ाइल में अधिकतम निष्पादन समय भी सेट कर सकते हैं :

php_value max_execution_time 180

0

वास्तव में समय सीमा बढ़ाने के लिए मैं पहले वर्तमान मूल्य प्राप्त करना पसंद करता हूं। set_time_limitहमेशा समय सीमा नहीं बढ़ा रहा है। यदि वर्तमान मूल्य (जैसे php.iniपूर्व या सेट से) वर्तमान कॉल में उपयोग किए गए मूल्य से अधिक है set_time_limit, तो यह समय सीमा को कम कर देगा !

तो इस तरह एक छोटे सहायक के साथ क्या है?

/**
 * @param int $seconds Time in seconds
 * @return bool
 */
function increase_time_limit(int $seconds): bool
{
    return set_time_limit(max(
        ini_get('max_execution_time'), $seconds
    ));
}

// somewhere else in your code
increase_time_limit(180);

यह भी देखें: PHP स्क्रिप्ट में max_execution_time प्राप्त करें

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