settings_store->load(); if ( $this->should_wait( $settings ) ) { return 0; } $started_at = $this->clock->now(); $due_links = $this->due_links->one_per_host( $started_at, $settings->batch_size, $settings->skip_hosts ); $checked_count = 0; foreach ( $due_links as $link ) { $spent_seconds = $this->clock->now() - $started_at; if ( $spent_seconds >= self::TIME_BUDGET_SECONDS ) { break; } $this->link_checker->check( $link ); ++$checked_count; } return $checked_count; } private function should_wait( Settings $settings ): bool { $is_paused = ScanRunState::Paused === $this->scan_state_store->load()->run_state; return $is_paused || $this->database_health->response_ms() > $settings->pause_at_ms; } }