2010-10-29 17 views
14

से अधिक है मेरे पास एक php ऐप है जो क्लाइंट नामक क्लास को कॉल करता है। हर बार मुझे त्रुटि का एक प्रकार मिलता है। मैंने सोचा कि यह पहले एसक्यूएल था लेकिन यह कक्षा को इंगित करता है।PHP: 30 सेकंड का अधिकतम निष्पादन समय

Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ClientPortal\classes\Connections.php on line 3

<?php 
    session_start(); 
    class Connections { //line 3 

किसी को भी पता है क्या यहाँ हो रहा है?

धन्यवाद,

बिली

+2

कृपया अपना पूरा कोड पोस्ट करें जो ऐसा कर सकता है। साथ ही, आप 'ini_set (' max_execution_time ', 14000) के साथ स्क्रिप्ट टाइम का विस्तार कर सकते हैं; ' – Sarfraz

उत्तर

40

PHP स्क्रिप्ट एक अधिक से अधिक समय के रूप में php.ini में घोषित वे, के लिए निष्पादित करने के लिए अनुमति दी रहे हैं।

आप निम्न पंक्ति जोड़कर इस दरकिनार कर सकते हैं यदि आप वास्तव में चाहते हैं:

ini_set('max_execution_time', 123456); 

जहां 123456 आप सीमा होना चाहता हूँ सेकंड की संख्या है।

आप set_time_limit फ़ंक्शन का भी उपयोग कर सकते हैं, जिसे मैं केवल उसी बारे में जानता हूं और मानता हूं। मैंने हमेशा पहले ही किया है।

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

जैसा कि नीचे दी गई टिप्पणी में देखा गया है, आप त्रुटि को रोकने के लिए max_execution_time को 0 पर सेट कर सकते हैं, लेकिन देखा गया है कि कम से कम एक वेब अनुरोध के लिए, आपको वास्तव में ऐसा नहीं करना चाहिए। PHP कमांड लाइन दुभाषिया के लिए, यह व्यवहार डिफ़ॉल्ट है हालांकि।

यदि आप उन समस्याओं के लिए यह समस्या देख रहे हैं जो हैं जो वेब अनुरोध के माध्यम से अंतिम उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले हैं, तो आपको वास्तविक कारण को काम करने के लिए कुछ प्रोफाइलिंग करना पड़ सकता है। यदि आप MySQL क्वेरी कर रहे हैं, तो slow query log चालू करके प्रारंभ करें। जब आप एक इंडेक्स भूल गए हैं, या यदि आप कुछ और अक्षम कर रहे हैं तो आपको यह बताने में विशेष रूप से अच्छा है।

आप कुछ $s = microtime(true); yourstuff(); var_dump(microtime(true)-$s); चीजों को भी अस्पष्ट कर सकते हैं ताकि वे अस्पष्ट चीजों को धीमा कर रहे हैं, बस यह सुनिश्चित करें कि आप उनमें से किसी को भी बाद में नहीं छोड़ सकते हैं!

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

+13

' ini_set ("max_execution_time", 0) का मतलब अधिकतम नहीं है (हालांकि सलाह नहीं दी गई है) – robjmills

+0

हाय, क्या आप इसका उत्तर दे सकते हैं (http : //stackoverflow.com/questions/28457538/sql-trigger-after-insert-update-another-table-with- शर्त), धन्यवाद – stom

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