2011-01-25 13 views
12

मुझे यह निर्धारित करने की आवश्यकता है कि अब तक एक PHP फ़ंक्शन कितना समय चल रहा है।निर्धारित करें कि अब तक कितने समय तक PHP को निष्पादित किया गया है

कुछ PHP कोड चलाने में कितना समय लगता है यह जानने के लिए कुछ विकल्प क्या हैं?

मैं ज़ेंड फ्रेमवर्क का उपयोग कर रहा हूं।

उत्तर

2

microtime - milisecond संकल्प के साथ वर्तमान समय लाने के लिए माइक्रोसेकंड

<?php 
$time = microtime(TRUE); 

//...code here... 

print (microtime(TRUE)-$time). ' seconds'; 
24

कॉल microtime(true) समारोह के साथ वापसी वर्तमान यूनिक्स टाइमस्टैम्प।

<?php 
$startTime = microtime(true); 

/*stuff is going on*/ 

echo "Elapsed time is: ". (microtime(true) - $startTime) ." seconds"; 
+1

+1 मैंने वही जवाब दिया होगा। – Christian

+0

उत्तर के लिए धन्यवाद, लेकिन एक ढांचे के भीतर लागू करना सरल नहीं है। इसके अलावा, यह सटीक नहीं है क्योंकि ढांचे द्वारा उपयोग किए जाने वाले प्रसंस्करण समय को – jmint

+0

नहीं माना जाता है, मुझे उम्मीद है कि आपको एक वास्तविक समय की आवश्यकता होगी, न कि समय-समय पर 'फ्रेमवर्क समय'। जहां तक ​​इसे मौजूदा कोड में कार्यान्वित किया जाता है, टाइमर वैश्विक रूप से सुलभ होने के लिए, सबसे आसान (आवश्यक नहीं है) एक सिंगलटन का उपयोग कर सकता है। – Mchl

0

आप बस PHP के मानक समय समाप्ति इस्तेमाल कर सकते हैं, और एक shutdown समारोह को लागू।

function say_goodbye() { 

    if (connection_status() == CONNECTION_TIMEOUT) { 
     ... do your special processing to save the process state here 
     ... then formulate a response for the browser 
    } 
} // function say_goodbye() 


register_shutdown_function("say_goodbye"); 

ध्यान दें कि आप मापदंडों

संपादित

function say_goodbye($controller1,$controller2) { 

    if (connection_status() == CONNECTION_TIMEOUT) { 
     ... do your special processing to save the process state here 
     ... then formulate a response for the browser 
    } 
} // function say_goodbye() 


$ctl1 = new DBController(); 
$ctl2 = new OPController(); 

register_shutdown_function("say_goodbye",$ctl1,$ctl2); 
+0

हम्म, आपका सुझाव दिलचस्प है लेकिन मुझे इस सेटअप के साथ मेरी प्रक्रिया की स्थिति को सहेजने में समस्या आ रही है क्योंकि शट डाउन फ़ंक्शन के भीतर मैं अब अपने ढांचे के नियंत्रकों के चरों तक पहुंच नहीं सकता – jmint

+0

हालांकि, ग्लोबल्स का उपयोग करके इसके लिए एक संभावित कार्यवाही है लेकिन मैं अभी भी इस पर विचार कर रहा हूँ। वैसे भी धन्यवाद :) – jmint

+0

आपको नियंत्रकों के लिए शटडाउन फ़ंक्शन पर $ चर को पास करने की आवश्यकता है, जिसका अर्थ है कि आप इसे प्रारंभ करने के बाद ही पंजीकृत कर सकते हैं ... संपादित करें देखें। मैं वास्तव में टाइमआउट को फँसाने और मेरे आउटपुट नियंत्रक द्वारा स्वरूपित प्रतिक्रिया लौटने के लिए इस विधि का उपयोग करता हूं। –

0

त्वरित और सटीक टुकड़ा मैं सिफारिश कर सकते हैं में से एक को स्वीकार करने के शटडाउन समारोह सेट कर सकते हैं।

//Block of my complex code 
//... 

echo 'Exact time taken to run: ' . (microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']) . ' seconds'; 
संबंधित मुद्दे