• Как реализовать функционал будильника в чат-боте?

    Ninazu
    @Ninazu
    Вопрос в следующем. Как часто будут добавлятся "будильники"? Почему именно пал выбор на 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();
    Ответ написан
    5 комментариев