feat: moneta 2.0, MONETA.Assistant payment module for PHPShop 6.7+
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MonetaPhpShop\callback;
|
||||
|
||||
use Throwable;
|
||||
|
||||
/**
|
||||
* Æóðíàë îòêàçîâ äî ïðîâåðêè ïîäïèñè: àäðåñ êîëáýêà ïóáëè÷íûé, è çàïèñü íà êàæäûé ìóñîðíûé
|
||||
* çàïðîñ ðàçäóâàëà áû æóðíàë îøèáîê PHP. Ïèøåò íå ÷àùå ñòðîêè çà èíòåðâàë è â íåé ñîîáùàåò,
|
||||
* ñêîëüêî îòêàçîâ ïðîïóùåíî. Åñëè ñ÷¸ò÷èê íåäîñòóïåí (òàáëèöû íåò — ìîäóëü âûêëþ÷åí), ïèøåò âñ¸.
|
||||
*/
|
||||
final class ThrottledLogger implements Logger
|
||||
{
|
||||
public const INTERVAL = 60;
|
||||
|
||||
/** @var Logger */
|
||||
private $logger;
|
||||
|
||||
/** @var LogThrottle */
|
||||
private $throttle;
|
||||
|
||||
/** @var callable(): int */
|
||||
private $clock;
|
||||
|
||||
/**
|
||||
* @param callable(): int|null $clock unix-âðåìÿ; ïî óìîë÷àíèþ `time()`
|
||||
*/
|
||||
public function __construct(Logger $logger, LogThrottle $throttle, ?callable $clock = null)
|
||||
{
|
||||
$this->logger = $logger;
|
||||
$this->throttle = $throttle;
|
||||
$this->clock = $clock ?? 'time';
|
||||
}
|
||||
|
||||
public function error(string $message): void
|
||||
{
|
||||
try {
|
||||
$skipped = $this->throttle->pass(($this->clock)(), self::INTERVAL);
|
||||
} catch (Throwable $exception) {
|
||||
$this->logger->error($message);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($skipped === null) {
|
||||
return;
|
||||
}
|
||||
if ($skipped > 0) {
|
||||
$message .= sprintf(
|
||||
' Ïåðåä ýòèì íå çàïèñàíî îòêàçîâ: %d (íå ÷àùå ñòðîêè â %d ñ).',
|
||||
$skipped,
|
||||
self::INTERVAL,
|
||||
);
|
||||
}
|
||||
$this->logger->error($message);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user