File manager - Edit - /home/autoph/public_html/projects/Rating-AutoHub/public/css/Timer.tar
Back
Timers.php 0000644 00000005567 15031025775 0006542 0 ustar 00 <?php namespace React\EventLoop\Timer; use React\EventLoop\TimerInterface; /** * A scheduler implementation that can hold multiple timer instances * * This class should only be used internally, see TimerInterface instead. * * @see TimerInterface * @internal */ final class Timers { private $time; private $timers = array(); private $schedule = array(); private $sorted = true; private $useHighResolution; public function __construct() { // prefer high-resolution timer, available as of PHP 7.3+ $this->useHighResolution = \function_exists('hrtime'); } public function updateTime() { return $this->time = $this->useHighResolution ? \hrtime(true) * 1e-9 : \microtime(true); } public function getTime() { return $this->time ?: $this->updateTime(); } public function add(TimerInterface $timer) { $id = \spl_object_hash($timer); $this->timers[$id] = $timer; $this->schedule[$id] = $timer->getInterval() + $this->updateTime(); $this->sorted = false; } public function contains(TimerInterface $timer) { return isset($this->timers[\spl_object_hash($timer)]); } public function cancel(TimerInterface $timer) { $id = \spl_object_hash($timer); unset($this->timers[$id], $this->schedule[$id]); } public function getFirst() { // ensure timers are sorted to simply accessing next (first) one if (!$this->sorted) { $this->sorted = true; \asort($this->schedule); } return \reset($this->schedule); } public function isEmpty() { return \count($this->timers) === 0; } public function tick() { // ensure timers are sorted so we can execute in order if (!$this->sorted) { $this->sorted = true; \asort($this->schedule); } $time = $this->updateTime(); foreach ($this->schedule as $id => $scheduled) { // schedule is ordered, so loop until first timer that is not scheduled for execution now if ($scheduled >= $time) { break; } // skip any timers that are removed while we process the current schedule if (!isset($this->schedule[$id]) || $this->schedule[$id] !== $scheduled) { continue; } $timer = $this->timers[$id]; \call_user_func($timer->getCallback(), $timer); // re-schedule if this is a periodic timer and it has not been cancelled explicitly already if ($timer->isPeriodic() && isset($this->timers[$id])) { $this->schedule[$id] = $timer->getInterval() + $time; $this->sorted = false; } else { unset($this->timers[$id], $this->schedule[$id]); } } } } Timer.php 0000644 00000002430 15031025775 0006341 0 ustar 00 <?php namespace React\EventLoop\Timer; use React\EventLoop\TimerInterface; /** * The actual connection implementation for TimerInterface * * This class should only be used internally, see TimerInterface instead. * * @see TimerInterface * @internal */ final class Timer implements TimerInterface { const MIN_INTERVAL = 0.000001; private $interval; private $callback; private $periodic; /** * Constructor initializes the fields of the Timer * * @param float $interval The interval after which this timer will execute, in seconds * @param callable $callback The callback that will be executed when this timer elapses * @param bool $periodic Whether the time is periodic */ public function __construct($interval, $callback, $periodic = false) { if ($interval < self::MIN_INTERVAL) { $interval = self::MIN_INTERVAL; } $this->interval = (float) $interval; $this->callback = $callback; $this->periodic = (bool) $periodic; } public function getInterval() { return $this->interval; } public function getCallback() { return $this->callback; } public function isPeriodic() { return $this->periodic; } }
| ver. 1.4 |
.
| PHP 8.1.32 | Generation time: 0 |
proxy
|
phpinfo
|
Settings