2010-05-27 13 views
14

मेरे PHP कोड के प्रदर्शन का परीक्षण करने के लिए मेरे लिए सबसे अच्छा तरीका क्या है?PHP कोड का प्रदर्शन परीक्षण

+0

निर्दिष्ट करें अपने लोड के तहत साइट। सभी तीन उपयोग मामलों में अपने स्वयं के उपकरण होते हैं, जो यहां उत्तरों में दिखाई देते हैं। – chiborg

+0

यहां [एक महान उत्तर] है (http://stackoverflow.com/a/1202746/4233593) –

उत्तर

6

Xdebug (नील एटकेन के जवाब देखें) PHP कोड में खराब प्रदर्शन के मुद्दों की पहचान करने के लिए उपयोगी है - लेकिन यह केवल बहुत नियंत्रित और प्रतिबंधात्मक शर्तों के तहत इस्तेमाल किया जा सकता - कम से कम नहीं इसकी मुश्किल क्या प्रभाव concurency पर देखने के लिए प्रदर्शन।

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

AFAIK रिकॉर्डिंग/स्क्रिप्टिंग इंटरैक्शन के लिए कोई PHP आधारित समाधान नहीं है - लेकिन पर्ल + डब्ल्यूडब्ल्यूडब्लू: मैकेनाइज + HTTP: रिकॉर्डर है। या यदि आप बेहद समृद्ध हैं तो आप एचपी लोडरनर उत्पाद खरीद सकते हैं।

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

... और फिर भी, PHP के लिए एक HTML पृष्ठ उत्पन्न करने के लिए लिया गया समय यह है कि ब्राउज़र पर किसी पृष्ठ को प्रस्तुत करने में कितना समय लगता है, यह कहानी का एक बहुत ही छोटा हिस्सा है।

HTH

सी

+1

बहुत अच्छी तरह से रखा गया है, यह मापना मुश्किल है कि आपका ऐप भारी भार के तहत कैसे कार्य कर सकता है। आप ब्राउज़रों को स्वचालित करने के लिए मैकेनाइजेशन के बजाय सेलेनियम का उपयोग कर सकते हैं, लेकिन जहां तक ​​मुझे पता है कि यह लोड परीक्षण के लिए डिज़ाइन नहीं किया गया है। –

+0

एचपी लोडरनर का जिक्र क्यों करें लेकिन apache jmeter नहीं? –

6

आप अपने कोड के निष्पादन समय को गड़बड़ाने के लिए माइक्रोटाइम() का उपयोग कर सकते हैं।

$start_timestamp = microtime(true); 
... 
---your Code--- 
... 
$end_timestamp = microtime(true); 
$duration = $end_timestamp - $start_timestamp; 
error_log("Execution took ".$duration." milliseconds."); 
+2

समय() सेकंड लौटाता है, मिलीसेकंड नहीं। मेरा मानना ​​है कि आप कुछ की तलाश कर रहे हैं [microtime()] (http://ca3.php.net/manual/en/function.microtime.php) –

+3

मुझे हमेशा नकारात्मक संख्याएं मिलती हैं। क्या मेरा कार्यक्रम समय से ही तेज है? – Ray

+0

@ रेमंड: आपने प्रकाश की तुलना में तेज़ी से चलने वाले कणों की संभावना साबित कर दी है :) – Thariama

11

आप प्रश्नों की एक बड़ी संख्या को चलाने के लिए ab (apache benchmark tool) उपयोग करने पर विचार करना चाहिए और xhprof प्रोफ़ाइल/अपने कोड का विश्लेषण करने के लिए: यहाँ कि के लिए एक बुनियादी कोड स्निपेट है। मेरी राय में, ये सिर्फ मूल बातें हैं लेकिन अच्छे परिणाम देते हैं।

4

xDebug एक प्रोफाइलर में बनाया गया है, एक बार के लिए कॉन्फ़िगर यह कुछ फ़ाइलें है कि आप kCacheGrind की तरह एक कार्यक्रम के साथ पढ़ सकते हैं या WinCacheGrind

यह तो आप सभी समारोह कॉल देखने के लिए अनुमति देगा डंप हो जाएगा, औसत और संचयी कॉल है समय और कुल स्क्रिप्ट निष्पादन समय। अपने कोड में बाधाओं को खोजने के लिए बहुत उपयोगी है।

2

यदि आप कोड के एक विशिष्ट भाग का परीक्षण करना चाहते हैं, तो PHP PEAR लाइब्रेरी से Benchmark पैकेज का उपयोग करने पर विचार करें।

$timer = new Benchmark_Timer(); 
$timer->start(); 
// Code to test here 
$timer->stop(); 
$timer->display(); 
1

एक पुराने मुद्दे पर एक नया रूप के रूप में, रूपरेखा में सहायता करने के लिए एक वाणिज्यिक उपकरण जैसे NewRelic उपयोग करने पर विचार। मैं व्यक्तिगत रूप से उन्हें मुफ्त या मामूली कीमत के लिए डेटा का एक छोटा सा नमूना प्राप्त करने के लिए उपयोग करता हूं। हालांकि मैं उनके पूरी तरह से विशेष रुप से प्रदर्शित उत्पाद परीक्षण का पूर्ण लाभ लेता हूं।

0

इसके अलावा आप APD (उन्नत PHP डीबगर) का उपयोग कर सकते हैं।

इसे काम करना काफी आसान है।

वहाँ एक अच्छा ट्यूटोरियल कैसे APD संकलन और इसके साथ की रूपरेखा बनाने के लिए है: आप PHP कोड का एक खंड, डेटाबेस या के समग्र प्रदर्शन का उपयोग करता है कोड का एक खंड का परीक्षण करना चाहते है, तो http://martinsikora.com/compiling-apd-for-php-54

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