Symfony:当前的执行时间?

时间:2011-06-07 14:14:32

标签: symfony1 symfony-1.4

我有一个耗时的脚本,我想定期记录它的执行时间。我如何找出当前的执行时间?

4 个答案:

答案 0 :(得分:2)

symfonian记录执行时间的方法是使用symfony附带的计时器管理器。

//Get timer instance called 'myTimer'.
$timer = sfTimerManager::getTimer('myTimer');
//Start timer.
$timer->startTimer();
// Do things
...
// Stop the timer and add the elapsed time
$timer->addTime();

此计时器将保存到您使用symfony配置的任何记录器中。 默认情况下,symfony具有DEV环境的sfWebDebugLogger,但您可以创建自己的并在factories.yml文件中对其进行配置。

关于此记录器的好处是它还记录了对计时器的调用次数。

答案 1 :(得分:0)

为什么不使用date('Y-m-d H:i:s')并记录...和/或计算与使用date()获得的开始时间的差异?

答案 2 :(得分:0)

考虑一下你在问什么,每个动作都记录在symfony log(root / log / app_name_ [env] .log)中。一旦操作结束就完成了这个日志记录,(没有简单的方法来计算从php执行php的线程的执行时间)。你可以尝试弄乱代码并添加代码,以便记录代码的某些点,当前的执行时间,如:

$init = microtime();
log("Process started at:". $init);
foreach($this->getLotsOfRecords() as $index=>$record)
{
  $start = microtime();
  log ($index." record started at".microtime());
  [do stuff]
  $end = microtime();
  log ($index." record ended at". $end . " time elapsed: ". ($start - $end));
}
$last = microtime();
log("Total elapsed time is: ". ($init - $last));

这是伪代码但我相信你可以弄清楚剩下的,希望这有帮助!

答案 3 :(得分:0)

我最后编写了自己的静态类:

class Timer
{
  protected static $start = null;

  public static function getDuration($format = '%H:%I:%S')
  {
    $now = new DateTime();

    if (!self::$start)
    {
      self::$start = new DateTime();
    }
    $period = $now->diff(self::$start);

    return $period->format($format);
  }
}

并将其记录为部分(循环):

<?php $logger->log(sprintf("Duration: %s", $duration = Timer::getDuration())) ?>