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";
}
}
}
?>
|
Opiniões dos usuários: 0
|
|
|
|
Formato |
Touch |
|
Dimensões |
163.60 x 75.60 x 9.10 mm |
|
Peso |
195.00 g |
|
Tamanho da tela |
6.50" |
|
Ecrã |
Colorido / IPS TFT 16M Cores 720 x 1600 px (6.50") 270 ppi |
|
Proteção de tela |
Corning Gorilla Glass Buy screen protector |
|
Ecrã adicional |
 |
|
Protecção do monitor secundário |
 |
|
Bateria |
Li-Ion 5000 mAhBuy powerbank |
|
O carregamento da bateria rápida |
 |
|
O carregamento da bateria sem fio |
 |
|
Memória interna |
128 GB |
|
memória RAM |
4 GB, 8 GB |
|
Cartão de memória |
 microSD, microSDHC, microSDXC até 256 GBBuy memory card |
|
Sistema operativo |
Android 9.0 Pie |
|
Interface |
ColorOS 6.0.1 |
|
Processador |
Qualcomm Snapdragon 665 SM6125 |
|
Velocidade |
2000 MHz |
|
GPU |
Adreno 610 |
|
Ecrã Táctil |
 |
|
Dual SIM |
 |
|
Cartões SIM padrão |
DualSIM(nanoSIM, nanoSIM) |
|
Modo Dual SIM |
dual standby |
|
Híbrido Dual SIM |
 |
|
Disponível no mercado |
3 trimestre 2019 |
|
Outro nome para o mesmo telemóvel |
CPH1937; CPH1939; PCHM30; PCHT30 |
|
Norma GSM |
850 900 1800 1900 |
|
Norma UMTS |
900 2100 |
|
Padrão LTE |
FDD LTE: 2100, 1800, 900, 850 TDD LTE: 26200, 2500, 2300, 1900 |
|
Padrão 5G |
 |
|
Norma CDMA |
850 |
|
Padrão TD-SCDMA |
2000 |
|
Norma UMA |
 |
P U B L I C I D A D E
|
Primeira câmera |
 |
|
Foto modelo de sensor |
Samsung S5KGM1 |
|
Matriz |
48 Mpx |
|
Resolução |
8000x6000 px |
|
Zoom ótico |
 |
|
Flash |
LED |
|
Cor dual-LED flash |
 |
|
Resolução de vídeo |
3840x2160 px |
|
Formatos de vídeo |
H.263, H.264, H.265, MPEG4 - 30 fps |
|
Adicional |
AF, f/1.8 |
|
Segunda câmera |
 |
|
Foto modelo de sensor |
OmniVision OV8856 |
|
Matriz |
8 Mpx |
|
Resolução |
3264x2448 px |
|
Zoom ótico |
 |
|
Flash |
LED |
|
Cor dual-LED flash |
 |
|
Formatos de vídeo |
H.263, H.264, H.265, MPEG4 - 30 fps |
|
Adicional |
f/2.25 |
|
Terceira câmera |
 |
|
Foto modelo de sensor |
OmniVision OV02A1B |
|
Matriz |
2 Mpx |
|
Resolução |
1600x1200 px |
|
Zoom ótico |
 |
|
Flash |
LED |
|
Cor dual-LED flash |
 |
|
Formatos de vídeo |
H.263, H.264, H.265, MPEG4 - 30 fps |
|
Adicional |
FF, f/2.4 |
|
Quarta câmera |
 |
|
Foto modelo de sensor |
OmniVision OV02A1B |
|
Matriz |
2 Mpx |
|
Resolução |
1600x1200 px |
|
Zoom ótico |
 |
|
Flash |
LED |
|
Cor dual-LED flash |
 |
|
Formatos de vídeo |
H.263, H.264, H.265, MPEG4 - 30 fps |
|
Adicional |
FF, f/2.4 |
P U B L I C I D A D E