Спящая разница во времени
$lastRequestTimestamp = microtime(true);
if (microtime(true) - $lastRequestTimestamp < 1) {
sleep(1);
}
$lastRequestTimestamp = microtime(true);
// now continue with the request ...
... работает, но если разница составляет даже несколько миллисекунд, он спит для 1 second
что важно, учитывая количество запросов, которые я должен сделать.
Как сделать так, чтобы скрипт спал только так, чтобы между запросами всегда была ровно 1 секунда, не меньше и не больше.
2 ответа
Решение
$timeDifferenceSecs = (microtime(true) - $lastRequestTimestamp);
$sleepMicrosecs = (1 - $timeDifferenceSecs)*1000000;
usleep($sleepMicrosecs);
Вы можете использовать usleep
вместо этого, таким образом, вы можете спать в течение микросекунд вместо полных секунд.