';
class AmazonApiRateLimiter { /** * Minimalna przerwa między zapytaniami (sekundy). */ const INTERVAL_SECONDS = 2; /** * Nazwa pliku blokady w katalogu log/. */ const LOCK_FILENAME = 'amazon_api_rate.lock'; /** * @var string Pełna ścieżka do pliku blokady */ private $lockFilePath; /** * @var bool Tryb debug */ private $debug; public function __construct($debug = false) { $this->debug = $debug; $this->lockFilePath = MT_ROOT . '/../log/' . self::LOCK_FILENAME; } /** * Czeka, jeśli ostatnie zapytanie było wykonane wcześniej niż INTERVAL_SECONDS temu. * * Musi być wywołane bezpośrednio przed każdym zapytaniem do Amazon API. * Blokuje inne procesy (flock LOCK_EX) na czas weryfikacji i ewentualnego czekania, * dzięki czemu kolejka zapytań jest respektowana globalnie. * * @return void */ public function wait() { $fh = fopen($this->lockFilePath, 'c+'); if ($fh === false) { $this->debug('[DEBUG AmazonApiRateLimiter] Nie można otworzyć pliku blokady: ' . $this->lockFilePath); return; } // Zablokuj - inne procesy czekają tutaj flock($fh, LOCK_EX); // Odczytaj czas ostatniego wywołania API rewind($fh); $content = fread($fh, 32); $lastCall = (float)$content; $now = microtime(true); $elapsed = $now - $lastCall; $waitTime = self::INTERVAL_SECONDS - $elapsed; if ($waitTime > 0) { $waitMicroseconds = (int)($waitTime * 1000000); $this->debug('[DEBUG AmazonApiRateLimiter] Rate limit: czekam ' . round($waitTime, 3) . 's przed zapytaniem do API.'); usleep($waitMicroseconds); } // Zapisz aktualny timestamp jako czas ostatniego wywołania ftruncate($fh, 0); rewind($fh); fwrite($fh, microtime(true)); fflush($fh); // Zwolnij blokadę - następny proces może wejść flock($fh, LOCK_UN); fclose($fh); } /** * Wypisuje komunikat diagnostyczny na stdout, jeśli tryb debug jest włączony. * * @param string $msg * @return void */ private function debug($msg) { if ($this->debug) { echo $msg . "\n"; } } } ?>

POCO M5
dati del telefono cellulare sul tuo sito

POCO M5

Dati del telefono cellulare POCO M5 sul tuo sito

Vendi sul ebay.com? Hai il tuo proprio sito? Vuoi dare informazioni di base sul questo telefono cellulare? E molto facile. Basta di copiare e incollare questo codice sul sito:

Incollare questo codice provoca l'apparizione del questo immagine:

P U B B L I C I T À


Visti di recente