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";
}
}
}
?>
手机对比: Sharp Aquos Sense4 Lite vs Sharp Aquos wish :: GSMchoice.com
';
-
主頁
-
Compare
-
Sharp-aquossense4lite-vs-sharp-aquoswish
|
用户意见: 0
|
用户意见: 0
|
|
|
|
|
手机规格 |
触控手机 | 触控手机 |
|
防水性和防尘性 |
IP65, IP68 | IP65, IP67 |
|
大小 |
148.00 x 71.00 x 8.90 mm | 147.00 x 71.00 x 8.90 mm |
|
Weight |
176.00 g | 162.00 g |
|
显示屏尺寸 |
5.80" | 5.70" |
|
Display |
彩色 / IGZO TFT 16M 颜色 60 Hz 1080 x 2280 px (5.80") 435 ppi | 彩色 / IPS TFT 16M 颜色 60 Hz 720 x 1520 px (5.70") 295 ppi |
|
显示保护 |
Buy screen protector | Buy screen protector |
|
附加显示屏 |
 |  |
|
辅助显示保护 |
 |  |
|
通话最长时间 |
4G: 3800 分钟 (63.3 h) | 3G: 2340 分钟 (39.0 h) |
|
待机最长时间 |
4G: 1020 钟头 (42.5 一天) | 3G: 580 钟头 (24.2 一天) |
|
标准电池 |
Li-Ion 4570 mAhBuy powerbank | Li-Ion 3730 mAhBuy powerbank |
|
快速充电 |
 | USB Power Delivery 3.0 |
|
无线充电 |
 |  |
|
手机存储 |
64 GB | 64 GB |
|
随机存取存储 (RAM) |
4 GB | 4 GB |
|
Memory cards |
 microSD, microSDHC, microSDXC 为 1000 GBBuy memory card |  microSD, microSDHC, microSDXC 为 1000 GBBuy memory card |
|
Operating system |
Android 10 | Android 11 |
|
处理器 |
Qualcomm Snapdragon 720G | Qualcomm Snapdragon 480 |
|
Processor clock |
2300 MHz | 2000 MHz |
|
GPU |
Adreno 618 | Adreno 619 |
|
Touchscreen |
 |  |
|
双SIM卡 |
 |  |
|
SIM卡标准 |
DualSIM(nanoSIM, nanoSIM) | DualSIM(eSIM, nanoSIM) |
|
卡双模式 |
dual standby | dual standby |
|
混合双卡双待 |
 |  |
|
发行日期 |
第 4 季 2020 | 第 1 季 2022 |
|
手机其他名称 |
Aquos Sense 4 Lite | SHG06; SH-M20 |
|
GSM frequencies |
850 900 1800 1900 | 850 900 1800 1900 |
|
UMTS标准 |
850 900 1900 2100 | 850 900 1900 2100 |
|
LTE 标准 |
FDD LTE: 2100, 1800, 900, 850, 800, 700 TDD LTE: 2500, 1900 |  |
|
5G 标准 |
 |  |
|
CDMA标准 |
 |  |
|
TD-SCDMA 标准 |
 |  |
|
UMA标准 |
 |  |
广告
|
第一台相机 |
 |  |
|
相机类型 |
标准镜头 | 标准镜头 |
|
矩阵 |
12 Mpx | 13 Mpx |
|
光学变焦 |
 |  |
|
视场 |
83 ° | 78 ° |
|
焦距 |
24 mm | 26 mm |
|
闪光灯 |
LED | LED |
|
双色LED闪光灯 |
 |  |
|
视频分辨率 |
1920x1080 px |  |
|
视频格式 |
H.263, H.264, MPEG4 - 30 fps | H.263, H.264, MPEG4 |
|
额外 |
AF, EIS, f/2.0 | AF, f/2.0 |
|
第二台相机 |
 |  |
|
相机类型 |
长焦镜头 | nd |
|
矩阵 |
8 Mpx | nd |
|
光学变焦 |
2x | nd |
|
视场 |
45 ° | nd |
|
焦距 |
53 mm | nd |
|
闪光灯 |
LED | nd |
|
双色LED闪光灯 |
 | nd |
|
视频格式 |
H.263, H.264, MPEG4 - 30 fps | nd |
|
额外 |
FF, EIS, f/2.4 | nd |
广告