';
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"; } } } ?>

Danew Konnect 560
datos del móvil en tu página

Danew Konnect 560

Datos del móvil Danew Konnect 560 en tu página


¿Vendes en ebay.com? ¿Tienes tu página web? ¡Si quieres introducir los datos básicos de este móvil en algún lugar - haz clic aqui!

Este código provocará la aparición de la imagen de más abajo:

P U B L I C I D A D


Visto recientemente