0

「 while」サイクルで実行されるスクリプトがあります。スクリプトが実行されていた時間を特定し、10 秒を超えている場合は終了する必要があります。私が書いたコードは、奇妙な 10 進数値を返します(1 秒は '5.342...' であり、他の秒は '903.322...' である可能性があります)。誰かがどうすればそれを達成できるか教えてもらえますか?

$timer = microtime(false);
while(/*...*/)
{
   $currTime = microtime(false);
   $timeDiff = $currTime - $timer;
   $timeDiff *= 1000;

   if ($timeDiff > 10)
   {
      //...
   }
}
4

3 に答える 3

2

マイクロ秒を追跡しています。秒だけを表示したい場合は、または
を使用して切り上げます。round()ceil()

set_time_limit()スクリプトを実行できる期間を制御するも検討してください。

set_time_limit(10); // allow ten seconds for this script to finish

register_shutdown_function()スクリプトが時間内に終了しなかった場合に必要なクリーンアップを処理するために使用できます。

于 2010-01-02T18:43:29.393 に答える
1

http://php.net/manual/en/function.microtime.phpを参照してください。

試す:

$timer = microtime(true);
while(true)
{
   $currTime = microtime(true);
   $timeDiff = $currTime - $timer;

   if ($timeDiff > 10)
   {
      die();
   }
}
于 2010-01-02T19:22:26.910 に答える
1
$timeDiff /= 1000;

1000 マイクロ秒は 1 秒であり、その逆ではありません

于 2010-01-02T18:45:01.980 に答える