marker($file); clearstatcache(true, $marker); return is_file($marker) && filemtime($marker) > time() - $this->retryAfter && file_get_contents($marker) === $this->fingerprint($file); } public function remember(string $file): void { @file_put_contents($this->marker($file), $this->fingerprint($file)); } public function forget(string $file): void { wp_delete_file($this->marker($file)); } private function marker(string $file): string { return $file . '.failed'; } private function fingerprint(string $file): string { return hash('sha256', $file . serialize([ get_option('advmo_settings', []), get_option('advmo_credentials', []), ])); } }