Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

लिनक्स पर PHP के लिए वास्तविक max_execution_time

यह काफी मुश्किल सलाह है, लेकिन अगर आप PHP को संशोधित और पुन:संकलित करने के इच्छुक हैं तो यह निश्चित रूप से वही करेगा जो आप चाहते हैं।

PHP स्रोत कोड पर एक नज़र डालें https:// github.com/php/php-src/blob/master/Zend/zend_execute_API.c (फाइल है Zend/zend_execute_API.c ), समारोह में zend_set_timeout . यह वह कार्य है जो समय सीमा को लागू करता है। यहां बताया गया है कि यह विभिन्न प्लेटफॉर्म पर कैसे काम करता है:

  • विंडोज़ पर, एक नया थ्रेड बनाएं, उस पर टाइमर प्रारंभ करें, और जब यह समाप्त हो जाए, तो timed_out नामक एक वैश्विक चर सेट करें 1 तक, PHP निष्पादन कोर प्रत्येक निर्देश के लिए इस चर की जांच करता है, फिर बाहर निकलता है (बहुत सरलीकृत)

  • सिगविन पर, ITIMER_REAL के साथ आईटाइमर का उपयोग करें, जो वास्तविक . को मापता है समय, किसी भी नींद सहित, प्रतीक्षा करें, जो भी हो, फिर एक संकेत उठाएं जो किसी भी को बाधित करेगा प्रसंस्करण और प्रसंस्करण बंद करो

  • अन्य यूनिक्स प्रणालियों पर, ITIMER_PROF के साथ आईटाइमर का उपयोग करें, जो केवल वर्तमान प्रक्रिया द्वारा खर्च किए गए CPU समय को मापता है (लेकिन उपयोगकर्ता-मोड और कर्नेल-मोड दोनों में)। इसका मतलब है कि अन्य प्रक्रियाओं (जैसे MySQL) की प्रतीक्षा करना इसमें शामिल नहीं है।

अब आप अपने लिनक्स पर आईटाइमर को ITIMER_PROF से ITIMER_REAL में बदलना चाहते हैं, जो निश्चित रूप से आपको मैन्युअल रूप से करने, पुन:संकलित करने, स्थापित करने आदि की आवश्यकता है। इन दोनों के बीच दूसरा अंतर यह है कि टाइमर चलने पर वे अलग-अलग सिग्नल का भी उपयोग करते हैं। बाहर। तो मेरा सुझाव है कि ifdef को बदलें:

#   ifdef __CYGWIN__

में

#   if 1

ताकि आप ITIMER_REAL और वह संकेत दोनों सेट कर सकें जिसका PHP SIGALRM के लिए इंतजार कर रहा है।

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑनलाइन/ऑफ़लाइन डेटाबेस सिंक्रोनाइज़ेशन - MySQL/PHP

  2. MySQL में NULL द्वारा ऑर्डर करें

  3. जेपीए का नक्शा<KEY, VALUE> JPQL की क्वेरी विफल रही

  4. लोड डेटा इनफाइल त्रुटि कोड:13

  5. डुप्लिकेट डेटा को mysql डेटाबेस में दर्ज होने से रोकें