* Pause processing until the specified time, to avoid hammering a DB or service
*
* @param int $target_time Timestamp
* @param int $min_sleep Always sleep for a minimum number of seconds,
* even if the target timestamp has already passed.
* Default 0, meaning only sleep until the target timestamp is reached.
*
* @example
while ( ! $finished )
{
$minimum_start_of_next_loop = time() + $min_secs_per_loop;
# DO STUFF THAT MAY OR MAY NOT TAKE VERY LONG
sleep_until( $minimum_start_of_next_loop, $min_pause_between_loops );
}
*/functionsleep_until($target_time,$min_sleep=0)
{$time_now=time();$time_to_target=$target_time-$time_now;// If we've already reached the target time, that's fineif ($time_to_target<=$min_sleep)
{// If required, sleep for a bit anywaysleep($min_sleep);
}
else
{// Sleep for the number of seconds until the target timesleep($time_to_target);
}
}?>