स्क्रिप्ट निष्पादन समय बढ़ाएँ. Nginx के साथ PHP स्क्रिप्ट का निष्पादन समय बढ़ाया गया। प्रोग्रामिंग में माप क्यों?

यदि आपके पास कोई बड़ा प्रोजेक्ट या सीमित संसाधनों वाला सर्वर है, तो आपको अक्सर "504 गेटवे टाइम-आउट" त्रुटि दिखाई देगी।

टाइमआउट मान बढ़ाने के लिए आप नीचे दिए गए चरणों का पालन कर सकते हैं। PHP में डिफ़ॉल्ट 30 सेकंड है।

Php.ini में परिवर्तन

यदि आप PHP स्क्रिप्ट के लिए अधिकतम निष्पादन समय को 30 सेकंड (डिफ़ॉल्ट) से 300 सेकंड में बदलना चाहते हैं।

नैनो /etc/php5/fpm/php.ini

स्थापित करना...

अधिकतम_निष्पादन_समय = 300

अपाचे में PHP एक मॉड्यूल के रूप में चलता है, ये परिवर्तन पर्याप्त होंगे। लेकिन हमारे मामले में हमें कई और जगहों पर बदलाव करने की जरूरत है.

PHP-FPM में परिवर्तन

यदि आपने पहले request_terminate_timeout पैरामीटर को अनटिप्पणी कर दिया है तो यह आवश्यक है। डिफ़ॉल्ट रूप से इस पर टिप्पणी की जाती है और php.ini से max_execution_time फ़ाउंड मान लिया जाता है

खुल रहा है...

नैनो /etc/php5/fpm/pool.d/www.conf

स्थापित किया जा रहा है...

अनुरोध_टर्मिनेट_टाइमआउट = 300

Nginx कॉन्फ़िगरेशन में परिवर्तन

एक डोमेन के लिए समय सीमा बढ़ाना example.com

नैनो /etc/nginx/sites-available/example.com स्थान ~ \.php$ (शामिल /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; }

यदि आप अपने सर्वर पर सभी डोमेन के लिए समय-सीमा बढ़ाना चाहते हैं, तो आप मुख्य nginx.conf कॉन्फ़िगरेशन फ़ाइल को संपादित कर सकते हैं:

नैनो /etc/nginx/nginx.conf

निम्नलिखित पैरामीटर को http(..) अनुभाग में जोड़ें

एचटीटीपी(#... fastcgi_read_timeout 300; #... }

क्या आपको कभी कोई त्रुटि प्राप्त हुई है घातक त्रुटि: अधिकतम निष्पादन समय 30 सेकंड से अधिक हो गयावर्डप्रेस में? इस त्रुटि का अर्थ है कि चल रही PHP स्क्रिप्ट को पूरा करने के लिए निर्धारित सीमा से अधिक समय की आवश्यकता है और इसके कारण स्क्रिप्ट बंद हो गई है। यह मार्गदर्शिका आपको इस प्रश्न को समझने में मदद करेगी कि PHP में स्क्रिप्ट निष्पादन समय को कैसे बढ़ाया जाए और इस प्रकार उत्पन्न होने वाली त्रुटि को हल किया जाए।

इस गाइड को शुरू करने से पहले, जांच लें कि आपके पास:

  • आपकी वर्डप्रेस साइट के एडमिनिस्ट्रेटिव कंसोल तक पहुंच (अंग्रेजी)

चरण 1 - WP मैक्सिमम एक्ज़ीक्यूशन टाइम एक्सीडेड प्लगइन इंस्टॉल करें

वर्डप्रेस में एक विशाल समुदाय है, इसलिए आपकी ज़रूरत की हर कार्यक्षमता के लिए एक या कई उपयोगी प्लगइन मौजूद हैं। हमारी स्थिति कोई अपवाद नहीं है; PHP में स्क्रिप्ट निष्पादन समय को बढ़ाने के लिए, आप WP मैक्सिमम एक्ज़ीक्यूशन टाइम एक्सीडेड प्लगइन का उपयोग कर सकते हैं और उत्पन्न हुई त्रुटि को ठीक कर सकते हैं। वर्डप्रेस प्लगइन कैसे स्थापित करें, इस पर विस्तृत निर्देश पाए जा सकते हैं।

यह प्लगइन .htaccess फ़ाइल में परिवर्तन करता है और स्क्रिप्ट निष्पादन समय सीमा को बढ़ाता है। प्लगइन इंस्टॉल करने के बाद आपको कुछ और करने की जरूरत नहीं है, सब कुछ प्लगइन पहले से ही कर लेता है। प्लगइन में कोई सेटिंग पेज नहीं है, इसलिए यदि आप पिछली सेटिंग्स वापस करना चाहते हैं, तो बस प्लगइन हटा दें और .htaccess अपने मूल स्वरूप में वापस आ जाएगा।

चरण 2 - .htaccess फ़ाइल को मैन्युअल रूप से संपादित करना

यदि आपके पास पहले से ही बहुत सारे प्लगइन्स इंस्टॉल हैं और आप किसी अतिरिक्त प्लगइन का उपयोग नहीं करना चाहते हैं या इससे आपको त्रुटि से छुटकारा पाने में मदद नहीं मिली है, तो आप अधिकतम निष्पादन बढ़ाने के लिए .htaccess फ़ाइल में मैन्युअल रूप से बदलाव कर सकते हैं। समय सीमा। उपयोग करने का सबसे आसान तरीका फ़ाइल मैनेजरआपके नियंत्रण कक्ष में स्थित है. यदि आप नहीं जानते कि .htaccess फ़ाइल कैसे ढूंढें, तो कृपया विस्तृत निर्देश देखें। आपको नीचे .htaccess फ़ाइल में निम्न कोड दर्ज करना होगा और क्लिक करके सेव करना होगा बचाना:

Php_मूल्य अधिकतम_निष्पादन_समय 60

इससे max_execution_time पैरामीटर का मान बढ़ जाएगा और, PHP के लिए, स्क्रिप्ट निष्पादन समय 60 सेकंड (1 मिनट) तक बढ़ जाएगा। यदि आपको अभी भी यह त्रुटि मिलती है, तो इसे और भी अधिक बढ़ाने का प्रयास करें - 120/180 सेकंड तक और इसी तरह।

चरण 3 - cPanel में max_execution_time मान बदलना

यदि आप cPanel का उपयोग कर रहे हैं, तो आप सीधे cPanel के माध्यम से max_execution_time पैरामीटर को बढ़ा सकते हैं। अनुभाग पर जाएँ PHP संस्करण चुनें (PHP संस्करण चुनें).

पंक्ति में जो मान आप देख रहे हैं उसे बढ़ाएँ अधिकतम_निष्पादन_समय. आमतौर पर, यह डिफ़ॉल्ट रूप से 30 सेकंड पर सेट होता है, हमारे उदाहरण में हमने इसे 60 सेकंड तक बढ़ा दिया है। क्लिक आवेदन करना(लागू करें) परिवर्तनों को सहेजने के लिए।

बस इतना ही, आपने सीमा पैरामीटर मान को सफलतापूर्वक बढ़ा दिया है अधिकतम_निष्पादन_समयआपकी वेबसाइट के लिए.

निष्कर्ष

इस गाइड का पालन करके, आपने वृद्धि करने के 3 तरीके सीखे हैं अधिकतम_निष्पादन_समयवर्डप्रेस के लिए, PHP में स्क्रिप्ट निष्पादन समय को बदलने और त्रुटि से छुटकारा पाने के लिए घातक त्रुटि: अधिकतम निष्पादन समय पार हो गया. यदि आप साझा होस्टिंग का उपयोग कर रहे हैं और कोई भी समाधान आपके लिए काम नहीं करता है, तो यह जांचने के लिए अपने होस्टिंग प्रदाता से संपर्क करें कि आपके वास्तविक प्रतिबंध क्या हैं और क्या उन्हें बिल्कुल बदला जा सकता है।

यदि आप कोई बड़ा प्रोजेक्ट विकसित कर रहे हैं, तो कुछ डेटा को संसाधित करने में बहुत समय लग सकता है। अलग-अलग होस्टिंग साइटों की ऐसी कार्रवाइयों पर अपनी सीमाएं हैं, और यदि इस समय को बढ़ाने की आवश्यकता आपको यहां ले आई है, तो मैं आपको विस्तार से बताऊंगा कि यह कैसे किया जा सकता है।

ताकि आप समझ सकें कि हम किस बारे में बात कर रहे हैं, मैं एक छोटा सा उदाहरण दूंगा। यदि आप निर्धारित समय सीमा से आगे जाते हैं, तो आपको निम्नलिखित त्रुटि प्राप्त हो सकती है:

गंभीर त्रुटि: लाइन 19 पर site.php में अधिकतम निष्पादन समय 30 सेकंड से अधिक हो गया

मैं आपको इससे छुटकारा पाने के 4 तरीकों के बारे में बताऊंगा।

लेकिन यह इस तथ्य से शुरू करने लायक है कि प्रत्येक व्यक्तिगत मामले में, सभी सूचीबद्ध तरीके काम नहीं कर सकते हैं, क्योंकि कुछ होस्टिंग प्रदाता स्वयं इस पैरामीटर को बदलने पर रोक लगाते हैं।

Php.ini कॉन्फ़िगरेशन फ़ाइल के माध्यम से PHP स्क्रिप्ट का निष्पादन समय बढ़ाना

स्क्रिप्ट के निष्पादन समय को बढ़ाने के पहले तरीके के रूप में, हम कॉन्फ़िगरेशन फ़ाइल का उपयोग करेंगे php.ini.

यह फ़ाइल कहां स्थित है, यह जानने के लिए पढ़ें।

इसे आपके लिए सुविधाजनक तरीके से खोलें और सबसे नीचे डालें:

अधिकतम_निष्पादन_समय = 300;

कहाँ " 300 "मतलब 300 सेकंड (आपके लिए बदलें)। दुर्भाग्यवश, यह फ़ाइल सभी होस्टिंग साइटों पर उपयोगकर्ताओं द्वारा संपादन के लिए उपलब्ध नहीं है।

अंतर्निहित "ini_set" फ़ंक्शन के माध्यम से PHP स्क्रिप्ट के निष्पादन समय को बढ़ाना

दूसरी विधि फ़ंक्शन का उपयोग करने पर आधारित है " ini_set" आप इसे सीधे स्क्रिप्ट फ़ाइल में ही डालें, अधिमानतः सबसे ऊपर। उदाहरण:

यहाँ तात्पर्य यह है " 300 "आपको जो चाहिए वो भी आप सेकंडों में बदल लेते हैं। टिप्पणीसुरक्षित मोड में PHP का उपयोग करते समय, यह फ़ंक्शन उपलब्ध नहीं होगा।

अंतर्निहित फ़ंक्शन "set_time_limit" के माध्यम से PHP स्क्रिप्ट का निष्पादन समय बढ़ाना

तीसरी विधि, संभवतः सबसे लोकप्रिय में से एक, "का उपयोग करना है set_time_limit»स्क्रिप्ट के निष्पादन समय को बदलने के लिए। इसका उपयोग सीधे PHP फ़ाइल में भी किया जाता है। उदाहरण:

यहाँ " 300 "आप अपनी ज़रूरत के अनुसार मूल्य भी बदलते हैं। कोड को सबसे ऊपर डालने की सलाह दी जाती है।

.htaccess फ़ाइल के माध्यम से PHP स्क्रिप्ट का निष्पादन समय बढ़ाना

अंतिम विकल्प फ़ाइल को संपादित करना है .htaccess, जो आपकी साइट के मूल में स्थित है (यदि यह मौजूद नहीं है, तो इसे बनाएं)।

इस फ़ाइल के सबसे ऊपर पेस्ट करें:

Php_मान अधिकतम_निष्पादन_समय 300

अर्थ " 300 “तुम भी इसे अपने में बदल लो.

टिप्पणी, कि सभी मामलों में स्क्रिप्ट निष्पादन समय सेकंड में दर्शाया गया है। इसके अलावा, सभी विधियों में पैरामीटर मान "ले सकता है" 0 ", जिसका अर्थ है असीमित निष्पादन समय।

मैं कैसे पता लगा सकता हूं कि PHP स्क्रिप्ट निष्पादित करने के लिए कितना समय आवंटित किया गया है?

किसी एक विधि का उपयोग करके स्क्रिप्ट के निष्पादन समय को बदलने का प्रयास करने के बाद, आपको यह पता लगाना होगा कि क्या आप वास्तव में सफल हुए हैं।

ऐसा करने के लिए, अपनी साइट के रूट में एक PHP फ़ाइल बनाएं, जहां आप निर्धारित समय का मान आउटपुट करेंगे:

यदि समय आपके बताए गए समय के बराबर है, तो बधाई हो, आपने अपना वांछित लक्ष्य प्राप्त कर लिया है। अन्यथा, लेख को दोबारा पढ़ें, टिप्पणियों में अपनी समस्या के बारे में लिखें या इसे अपने होस्टिंग प्रदाता को अग्रेषित करें।

यदि आप कोई बड़ा प्रोजेक्ट विकसित कर रहे हैं, तो कुछ डेटा को संसाधित करने में बहुत समय लग सकता है। अलग-अलग होस्टिंग साइटों की ऐसी कार्रवाइयों पर अपनी सीमाएं हैं, और यदि इस समय को बढ़ाने की आवश्यकता आपको यहां ले आई है, तो मैं आपको विस्तार से बताऊंगा कि यह कैसे किया जा सकता है।

ताकि आप समझ सकें कि हम किस बारे में बात कर रहे हैं, मैं एक छोटा सा उदाहरण दूंगा। यदि आप निर्धारित समय सीमा से आगे जाते हैं, तो आपको निम्नलिखित त्रुटि प्राप्त हो सकती है:

घातक त्रुटि: पंक्ति 19 पर pandoge_com.php में अधिकतम निष्पादन समय 30 सेकंड से अधिक हो गया

मैं आपको इससे छुटकारा पाने के 4 तरीकों के बारे में बताऊंगा।

लेकिन यह इस तथ्य से शुरू करने लायक है कि प्रत्येक व्यक्तिगत मामले में, सभी सूचीबद्ध तरीके काम नहीं कर सकते हैं, क्योंकि कुछ होस्टिंग प्रदाता स्वयं इस पैरामीटर को बदलने पर रोक लगाते हैं।

Php.ini कॉन्फ़िगरेशन फ़ाइल के माध्यम से PHP स्क्रिप्ट का निष्पादन समय बढ़ाना

स्क्रिप्ट के निष्पादन समय को बढ़ाने के पहले तरीके के रूप में, हम कॉन्फ़िगरेशन फ़ाइल का उपयोग करेंगे php.ini.

यह फ़ाइल कहां स्थित है, यह जानने के लिए पढ़ें।

इसे आपके लिए सुविधाजनक तरीके से खोलें और सबसे नीचे डालें:

अधिकतम_निष्पादन_समय = 300;

कहाँ " 300 "मतलब 300 सेकंड (आपके लिए बदलें)। दुर्भाग्यवश, यह फ़ाइल सभी होस्टिंग साइटों पर उपयोगकर्ताओं द्वारा संपादन के लिए उपलब्ध नहीं है।

अंतर्निहित "ini_set" फ़ंक्शन के माध्यम से PHP स्क्रिप्ट के निष्पादन समय को बढ़ाना

दूसरी विधि फ़ंक्शन का उपयोग करने पर आधारित है " ini_set" आप इसे सीधे स्क्रिप्ट फ़ाइल में ही डालें, अधिमानतः सबसे ऊपर। उदाहरण:

यहाँ तात्पर्य यह है " 300 "आपको जो चाहिए वो भी आप सेकंडों में बदल लेते हैं। टिप्पणीसुरक्षित मोड में PHP का उपयोग करते समय, यह फ़ंक्शन उपलब्ध नहीं होगा।

अंतर्निहित फ़ंक्शन "set_time_limit" के माध्यम से PHP स्क्रिप्ट का निष्पादन समय बढ़ाना

तीसरी विधि, संभवतः सबसे लोकप्रिय में से एक, "का उपयोग करना है set_time_limit»स्क्रिप्ट के निष्पादन समय को बदलने के लिए। इसका उपयोग सीधे PHP फ़ाइल में भी किया जाता है। उदाहरण:

यहाँ " 300 "आप अपनी ज़रूरत के अनुसार मूल्य भी बदलते हैं। कोड को सबसे ऊपर डालने की सलाह दी जाती है।

.htaccess फ़ाइल के माध्यम से PHP स्क्रिप्ट का निष्पादन समय बढ़ाना

अंतिम विकल्प फ़ाइल को संपादित करना है .htaccess, जो आपकी साइट के मूल में स्थित है (यदि यह मौजूद नहीं है, तो इसे बनाएं)।

इस फ़ाइल के सबसे ऊपर पेस्ट करें:

Php_मान अधिकतम_निष्पादन_समय 300

अर्थ " 300 “तुम भी इसे अपने में बदल लो.

टिप्पणी, कि सभी मामलों में स्क्रिप्ट निष्पादन समय सेकंड में दर्शाया गया है। इसके अलावा, सभी विधियों में पैरामीटर मान "ले सकता है" 0 ", जिसका अर्थ है असीमित निष्पादन समय।

मैं कैसे पता लगा सकता हूं कि PHP स्क्रिप्ट निष्पादित करने के लिए कितना समय आवंटित किया गया है?

किसी एक विधि का उपयोग करके स्क्रिप्ट के निष्पादन समय को बदलने का प्रयास करने के बाद, आपको यह पता लगाना होगा कि क्या आप वास्तव में सफल हुए हैं।

ऐसा करने के लिए, अपनी साइट के रूट में एक PHP फ़ाइल बनाएं, जहां आप निर्धारित समय का मान आउटपुट करेंगे:

यदि समय आपके बताए गए समय के बराबर है, तो बधाई हो, आपने अपना वांछित लक्ष्य प्राप्त कर लिया है। अन्यथा, लेख को दोबारा पढ़ें, टिप्पणियों में अपनी समस्या के बारे में लिखें या इसे अपने होस्टिंग प्रदाता को अग्रेषित करें।

लेखक से:मेरे मित्र के बेटे को रसायन विज्ञान में इतनी रुचि हो गई कि उसने घर पर ही विभिन्न "परीक्षण" करना शुरू कर दिया। रसोई में झूमर उनका "शिकार" बनने के बाद, उनके पिता ने उनसे अपनी प्राथमिकताएँ बदलने के लिए कहा। परिणामस्वरूप, बच्चे को आंकड़ों में रुचि हो गई और उसने एक माचिस के औसत जलने के समय की गणना करने का निर्णय लिया। नतीजा यह हुआ कि पूरे अपार्टमेंट में लगभग आग लग गयी. मैंने भावी वैज्ञानिक को प्रोग्रामिंग शुरू करने और PHP स्क्रिप्ट का निष्पादन समय निर्धारित करने की सलाह दी।

प्रोग्रामिंग में माप क्यों?

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

आइए थोड़ी कल्पना करें. आइए कल्पना करें कि किसी प्रकार का "होम-लिखित" इंजन है, जिसे डेवलपर ने एक अच्छी होस्टिंग पर "अपलोड" किया और अपनी वेबसाइट लॉन्च की (इसके आधार पर)। लेकिन किसी कारण से, उपयोगकर्ता पक्ष पर संसाधन लोड करना बहुत धीमा है।

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

लेकिन वास्तव में, गतिशील संसाधन के पृष्ठों को धीमी गति से लोड करने की समस्या इंजन में ही छिपी हो सकती है। और बाद में "डमी" की तरह न दिखने के लिए, एक अनुभवी डेवलपर किसी प्रोजेक्ट को वितरित करने से पहले हमेशा PHP स्क्रिप्ट के निष्पादन समय को मापता है।

पीएचपी विशेषताएं

मैंने हमेशा इसे सबसे सुविधाजनक प्रोग्रामिंग भाषाओं में से एक कहा है। कोड के चलने के समय को ट्रैक करने के लिए, डेवलपर को स्क्रिप्ट की प्रत्येक पंक्ति को इंटरसेप्ट करने के लिए लंबे "टैलमुड्स" लिखने की आवश्यकता नहीं है। यह तकनीक कई विशिष्ट उपकरण लागू करती है। मुख्य एक माइक्रोटाइम() फ़ंक्शन है। यह 1970 की शुरुआत के बाद से बीत चुका समय (मिलीसेकंड में) लौटाता है। तथाकथित "यूनिक्स युग की शुरुआत।" यदि आप फ़ंक्शन में get_as_float पैरामीटर को true मान के साथ पास करते हैं, तो यह समय अवधि को पूरे सेकंड और आंशिक मिलीसेकंड के रूप में वापस कर देगा।

माइक्रोटाइम() का उपयोग करने का सिद्धांत इस प्रकार है: फ़ंक्शन को स्क्रिप्ट की शुरुआत में और उसके अंत में कॉल किया जाता है। फिर प्रारंभिक मान को अंतिम मान से घटा दिया जाता है। यहां किसी स्क्रिप्ट के निष्पादन समय की गणना करने का तरीका बताया गया है:

"; $last=microtime(true); $value=$last-$first; echo "स्क्रिप्ट को इसमें निष्पादित किया गया है: ".$value; ?>

कोड का रनिंग टाइम बदलना

PHP में, स्क्रिप्ट रनिंग टाइम मान को प्रोग्रामेटिक रूप से सीमित (कमी या वृद्धि) किया जा सकता है। ऐसा करने के लिए, कई फ़ंक्शन का उपयोग किया जाता है, जिनमें से प्रत्येक कॉन्फ़िगरेशन फ़ाइल (php.ini) में सेट किए गए पैरामीटर को अधिलेखित कर देता है।
सबसे पहले, आइए अपने कोड को संशोधित करें और लूप पुनरावृत्तियों की संख्या को 20 गुना बढ़ाकर 200 मिलियन करें। यदि सब कुछ ठीक है, तो स्क्रिप्ट चलाने के बाद आपको एक घातक त्रुटि संदेश प्राप्त होना चाहिए।

इसका मतलब है कि सेटिंग्स में max_execution_time पैरामीटर डिफ़ॉल्ट मान (30 सेकंड) पर सेट है। आइए PHP में किसी स्क्रिप्ट के अधिकतम निष्पादन समय को 3 गुना बढ़ाएँ।

set_time_limit(90);

अब हमें कोई त्रुटि संदेश प्राप्त नहीं होता.