एसओ डॉक्यूमेंटेशन बीटा से मेरा संदर्भ पोस्ट करें जो ऑफ़लाइन हो रहा है।
XDebug के साथ प्रोफाइलिंग
PHP के लिए Xdebug नाम का एक एक्सटेंशन PHP अनुप्रयोगों की रूपरेखा के साथ-साथ रनटाइम डीबगिंग की सहायता के लिए उपलब्ध है । प्रोफाइलर को चलाते समय, आउटपुट को बाइनरी फॉर्मेट में "कैशग्रिंड" नामक फाइल में लिखा जाता है। इन फ़ाइलों का विश्लेषण करने के लिए प्रत्येक प्लेटफ़ॉर्म पर एप्लिकेशन उपलब्ध हैं। इस रूपरेखा को निष्पादित करने के लिए कोई एप्लिकेशन कोड परिवर्तन आवश्यक नहीं हैं।
प्रोफाइलिंग को सक्षम करने के लिए, एक्सटेंशन इंस्टॉल करें और php.ini सेटिंग्स को समायोजित करें। कुछ लिनक्स वितरण मानक पैकेज (उदाहरण के लिए उबंटू के php-xdebug
पैकेज) के साथ आते हैं । हमारे उदाहरण में हम प्रोफ़ाइल को वैकल्पिक रूप से अनुरोध पैरामीटर के आधार पर चलाएंगे। यह हमें सेटिंग्स को स्थिर रखने और केवल आवश्यकतानुसार प्रोफाइलर को चालू करने की अनुमति देता है।
# php.ini settings
# Set to 1 to turn it on for every request
xdebug.profiler_enable = 0
# Let's use a GET/POST parameter to turn on the profiler
xdebug.profiler_enable_trigger = 1
# The GET/POST value we will pass; empty for any value
xdebug.profiler_enable_trigger_value = ""
# Output cachegrind files to /tmp so our system cleans them up later
xdebug.profiler_output_dir = "/tmp"
xdebug.profiler_output_name = "cachegrind.out.%p"
अपने एप्लिकेशन के URL से अनुरोध करने के लिए वेब क्लाइंट का उपयोग करें, जैसे कि आप प्रोफ़ाइल करना चाहते हैं
http://example.com/article/1?XDEBUG_PROFILE=1
पृष्ठ की प्रक्रिया के रूप में यह एक फ़ाइल के समान नाम के साथ लिखेगा
/tmp/cachegrind.out.12345
डिफ़ॉल्ट रूप से फ़ाइल नाम में संख्या प्रक्रिया आईडी है जिसने इसे लिखा है। यह xdebug.profiler_output_name
सेटिंग के साथ कॉन्फ़िगर करने योग्य है।
ध्यान दें कि यह प्रत्येक PHP अनुरोध / प्रक्रिया के लिए एक फ़ाइल लिखेगा जिसे निष्पादित किया जाता है। इसलिए, उदाहरण के लिए, यदि आप एक फॉर्म पोस्ट का विश्लेषण करना चाहते हैं, तो HTML फॉर्म को प्रदर्शित करने के लिए GET अनुरोध के लिए एक प्रोफ़ाइल लिखा जाएगा। XDEBUG_PROFILE के पैरामीटर को दूसरे अनुरोध का विश्लेषण करने के लिए बाद के POST अनुरोध में पारित करना होगा जो फ़ॉर्म को संसाधित करता है। इसलिए जब प्रोफाइलिंग की जाती है तो कर्ल को सीधे POST के रूप में चलाना आसान होता है।
आउटपुट का विश्लेषण
एक बार जब प्रोफ़ाइल कैश लिखा जाता है तो KCachegrind या Webgrind जैसे एप्लिकेशन द्वारा पढ़ा जा सकता है । PHPStorm, एक लोकप्रिय PHP IDE, इस प्रोफाइलिंग डेटा को भी प्रदर्शित कर सकता है ।
उदाहरण के लिए, कैशेग्रिंड, सहित जानकारी प्रदर्शित करेगा:
- कार्य निष्पादित
- कॉल समय, दोनों ही और बाद के फ़ंक्शन कॉल को शामिल किया गया
- प्रत्येक फ़ंक्शन को कितनी बार कहा जाता है
- रेखांकन करें
- सोर्स कोड के लिंक
क्या देखें
स्पष्ट रूप से प्रदर्शन ट्यूनिंग प्रत्येक अनुप्रयोग के उपयोग के मामलों के लिए बहुत विशिष्ट है। सामान्य तौर पर यह देखने में अच्छा है:
- उसी फ़ंक्शन को बार-बार कॉल करने से आपको देखने की उम्मीद नहीं होगी। उन कार्यों के लिए जो डेटा को प्रोसेस और क्वेरी करते हैं, ये आपके एप्लिकेशन को कैश करने के प्रमुख अवसर हो सकते हैं।
- धीमी गति से चल रहे कार्य। आवेदन का अधिकांश समय कहां खर्च होता है? प्रदर्शन ट्यूनिंग में सबसे अच्छा भुगतान आवेदन के उन हिस्सों पर ध्यान केंद्रित कर रहा है जो सबसे अधिक समय का उपभोग करते हैं।
नोट : Xdebug, और विशेष रूप से इसकी रूपरेखा विशेषताएं, बहुत ही गहन संसाधन हैं और PHP निष्पादन को धीमा कर देती हैं। उत्पादन सर्वर वातावरण में इन्हें न चलाने की सलाह दी जाती है।