ساختن يك كلاس تايمر ساده

RainDigital

Member
مي خوام آرورم آروم تو طول تابستون بتركونم :lol:

ـــــــــــــــــــــــــــــــــــــــــــــــــــ
در اين قسمت به ساخت يك كلاس Timer مي پردازيم كه كاربردهاي زيادي مي تواند داشته باشد.براي مثال براي اندازه گيري زمان ايجاد يك صفحه (Page Generation Time) كه در آن Query هاي زيادي وجود دارد، مي توان از اين كلاس استفاده نمود و با بهينه سازي اين Query ها، زمان ايجاد صفحه را كاهش داد. در زير كد مربوط به اين كلاس آورده شده است:
PHP:
class microTimer { 
    function start() { 
        global $starttime; 
        $mtime = microtime (); 
        $mtime = explode (' ', $mtime); 
        $mtime = $mtime[1] + $mtime[0]; 
        $starttime = $mtime; 
    } 
    function stop() { 
        global $starttime; 
        $mtime = microtime (); 
        $mtime = explode (' ', $mtime); 
        $mtime = $mtime[1] + $mtime[0]; 
        $endtime = $mtime; 
        $totaltime = round (($endtime - $starttime), 5); 
        return $totaltime; 
    } 
}
تحليل كد: اين كلاس دو متد (تابع عضو) شروع و پايان دارد كه دقيقا كار يك زمان سنج را انجام مي دهد.
تابع ()microtime يكي از توابع پركاربردphp مي باشد كه زمان را به صورت رشته"msec sec" بر مي گرداند كه sec زمان جاري اندازه گيري شده از مبدا زمان UNIX مي باشد.(0:00:00 January 1, 1970 GMT)
msec هم بخش مربوط به مايكرو ثانيه مي باشد. توسط تابع explode و مشخص كردن كاراكتر جداكننده اين دوبخش را از هم جدا مي كنيم و در آرايه اي قرار مي دهيم. با جمع كردن اين دو بخش، زمان جاري را به صورت مايكرو ثانيه بدست مي آوريم. پارامتر دوم تابع ()round ،مشخص مي كند كه عدد اعشاري مورد نظر تا چند رقم round شود.
استفاده از كلاس Timer :براي اندازه گيري زمان ايجاد يك صفحه، در ابتداي آن كد زير را مي نويسيم و يك Object از روي class خود ايجاد مي كنيم:
PHP:
 //در قسمت آغازين كد برنامه شما 
$Timer = new microTimer; 
$Timer->start();
در انتهاي برنامه خود هم تابع stop از كلاس Timer را فراخواني مي كنيم:
PHP:
//در انتهاي كد برنامه 
echo"<!-- execution time: ".$Timer->stop()." -->";
[/PHP]
 
آخرین ویرایش:

golden

Member
کلاس مناسبی بود ولی اگه مثلا بخواهیم توی یه صفحه چند تا تایمر داشته باشیم باید چند تا نمونه از این کلاس بسازیم. من از این کلاس استفاده میکنم.
PHP:
class timer{
	var $Timers = array();
	function timer_start($Name = 'noname'){
		$TimeArray = explode(' ', microtime());
		$ActualTime = $TimeArray[1].substr($TimeArray[0],1);
		$this->Timers[$Name] = $ActualTime;
	}
	
	function timer_time($Name = 'noname'){
		$TimeArray = explode(' ', microtime());
		$ActualTime = $TimeArray[1].substr($TimeArray[0],1);
		$ElapsedTime = bcsub($ActualTime,$this->Timers[$Name],6);
		return $ElapsedTime;
	}
}
با تغییر پارامتر ورودی می تونی تایمرهای متفاوتی داشته باشی و دیگه نیاز نیست که چند تا نمونه از یه کلاس بسازی.
 

RainDigital

Member
من اصلا نمیدونستم این وبلاگ وجود داره!
این کد رو از وبلاگی بر داشتم که یک سال شاید هم دوسال پیش بسته شده
 

Dark Man

Member
شما این کلاس رو احتمالا از وبلاگ PHPRun برداشتید که مال اقای خلیلی بود ، برداشتید ، حالا هم که ادرس جدید وبلاگشون رو میبینید.
 

RainDigital

Member
بله درسته چون نمی دونستم این وبلاگ دوباره باز شده به فکر افتادم تا کد های اون وبلاگ رو که ذخیره کرده بودم رو بزارم حالا هم كه دوباره باز شده خيلي خوش حالم :cool:
 

جدیدترین ارسال ها

بالا