Время начала и окончания PHP - PullRequest
       0

Время начала и окончания PHP

2 голосов
/ 12 октября 2011
class Test extends Controller {    
public function start_process(){  
     $begin_time = time();  
     echo $begin_time ;   // suppose it shows 1318412333
    // statement 1   
    // statement 2   
    // statement 3   
    // statement 4   
    // statement 5   
    // statement 6   
    // some more code

    $this->end_process($begin_time);  
    }

    public function end_process($begin_time){  
    $end_time = time();
    echo $begin_time . " " . $end_time;  
    }
}

Теперь, когда я эхо в функции end_process.Предположим, что end_time 1318412390, я получаю begin_time такой же, как end_time.Почему это происходит .. Как получить исходное значение begin_time, которое было установлено в первой функции

Ответы [ 4 ]

3 голосов
/ 12 октября 2011

Попробуйте использовать микротайм . Это дает вам более точное время считывания, когда время выполнения меньше секунды.

Редактировать

microtime(true); вернет время как число с плавающей запятой, чтобы было легче увидеть разницу.

0 голосов
/ 12 октября 2011

Просто запустите этот код:

$test = new Test();
    $test->start_process();

    class Test  {    
    public function start_process(){  
         $begin_time = microtime(true);  
         echo $begin_time . ' ';   // suppose it shows 1318412333 
         for($i=0;$i<10000;$i++) { 
           //just some delay as if the script is doing something
         }
        $this->end_process($begin_time);  
        }

        public function end_process($begin_time){  
        $end_time = microtime(true);
        echo $begin_time . " " . $end_time;  
        }
    }

Вы увидите, что это работает, так что фрагмент кода не проблема.Ошибка должна быть в какой-то другой части кода.

0 голосов
/ 12 октября 2011

Я сделал быстрый тест:

<?php
ini_set('display_errors', true);
class test {

    public function start_process(){  
        $begin_time = time();  
        echo $begin_time . "<br>";   // suppose it shows 1318412333
        // statement 1   
        // statement 2   
        // statement 3   
        // statement 4   
        // statement 5   
        // statement 6   
        // some more code
        sleep(1);
        $this->end_process($begin_time);  
    }

    public function end_process($begin_time){  
        $end_time = time();
        echo $begin_time . " <br> " . $end_time;  
    }
}

$test = new test();
$test->start_process();

?>

Мой результат

1318415493
1318415493
1318415494

Пожалуйста, оставьте свой код.

0 голосов
/ 12 октября 2011

время (); дает вам секунды, но на самом деле вы имеете дело с их долями. Как указал паук, вы хотите использовать microtime ()!

<?php

$start = microtime(true);

// -- do something --

// calulcate duration between $start and now
$duration = microtime(true) - $start;
// print in the format 1.2345 for better reading
printf("took %0.4d seconds", $duration);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...