2010-04-09 13 views
40

एक बहुत ही सरल रूपरेखा मैं इस तरह microtime() उपयोग करें:PHP microtime के साथ प्रोफाइलिंग(): नकारात्मक समय?

$now = microtime(); 
for (...) { 
    // do something 
    echo microtime() - $now; 
    $now = microtime(); 
} 

अब, echo लाइन के उत्पादन पूरी तरह से यादृच्छिक लगता है, वह यह है कि, मैं उतार-चढ़ाव की उम्मीद है, लेकिन मैं ऋणात्मक संख्याओं उम्मीद नहीं थी दिखा रहा है।

हालांकि, एक सामान्य परिणाम में ~ 1/3 नकारात्मक संख्याएं होती हैं। मैंने सोलारिस (PHP 5.0.x) और विनविस्टा (PHP 5.2.3) पर इसकी पुष्टि की।

यहां बिल्ली क्या चल रहा है? क्या मैंने गलती से एक टाइम मशीन का आविष्कार किया है?

+4

हाँ यू है !!!!! :) मुझे इसे नियंत्रित करने के लिए बताएं .... –

+1

यह कुछ ऐसा है जो मैंने देखा लेकिन कभी भी परेशान नहीं किया, मैं anwser के लिए उत्सुक हूँ :) – ChrisR

उत्तर

60

यदि आप microtime द्वारा लौटाए गए कार्यों पर संचालन करना चाहते हैं, तो आपको "फ्लोट के रूप में प्राप्त करें" पैरामीटर को सत्य पर सेट करना होगा (यह गलत पर डिफ़ॉल्ट है)।

http://www.php.net/manual/en/function.microtime.php

$now = microtime(true); 
for (...) { 
    // do something 
    echo microtime(true) - $now; 
    $now = microtime(true); 
} 
+2

समय मशीन को नियंत्रित करने के लिए कुंजी !!!! –

+2

हां, हां। दस्तावेज़ीकरण पढ़ना कभी-कभी मदद करता है। जवाब के लिए धन्यवाद! – Boldewyn

+14

अरख के उत्तर को पूरा करने के लिए: 'get_as_float' के बिना' microtime() 'की प्रतिक्रिया * स्ट्रिंग *' sprintf ('% f% d', $ microseconds, time()) है। किसी भी परिस्थिति में किसी को भी इस प्रतिनिधित्व की आवश्यकता होगी? – Boldewyn

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