protected static function checkUnlockTimer() {
        if (static::$_unlockTimer instanceof TimerInterface) {
            return;
        }
        static::$_unlockTimer = \Reaction::$app->loop->addPeriodicTimer(1, function () {
            $now = time();
            foreach (static::$_lockedFiles as $filePath => $timeout) {
                if ($timeout <= $now) {
                    static::unlock($filePath);
                }
            }
        });
    }