Вопрос в следующем. Как часто будут добавлятся "будильники"? Почему именно пал выбор на PHP? Планируется ли дальнейшее расширение системы? Применим ли запуск скрипта из консоли без ограничений по времени выполнения?
class Delay {
private static $alarms = [];
public static function addInterval($seconds, $userId) {
self::$alarms[time() + $seconds][$userId] = $seconds;
}
public static function loop() {
while (true) {
$dttm = time();
if (isset(self::$alarms[$dttm])) {
foreach (self::$alarms[$dttm] as $userId => $seconds) {
self::$alarms[$dttm + $seconds][$userId] = $seconds;
echo "User #{$userId} прождал {$seconds} cек\n ";
}
unset(self::$alarms[$dttm]);
}
sleep(1);
}
}
}
Delay::addInterval(5, 1);
Delay::addInterval(10, 2);
Delay::loop();