f7cloud_client/apps/mail/lib/Support/PerformanceLoggerTask.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

75 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2019 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Mail\Support;
use OCP\AppFramework\Utility\ITimeFactory;
use Psr\Log\LoggerInterface;
use function function_exists;
use function memory_get_peak_usage;
use function memory_get_usage;
use function round;
use function sprintf;
class PerformanceLoggerTask {
/** @var string */
private $task;
/** @var ITimeFactory */
private $timeFactory;
/** @var LoggerInterface */
private $logger;
/** @var int */
private $start;
/** @var int */
private $rel;
public function __construct(string $task,
ITimeFactory $timeFactory,
LoggerInterface $logger) {
$this->task = $task;
$this->timeFactory = $timeFactory;
$this->logger = $logger;
$this->start = $this->rel = $timeFactory->getTime();
}
public function step(string $description): void {
$now = $this->timeFactory->getTime();
$passed = $now - $this->rel;
$message = $this->task . " - $description took {$passed}s.";
if (function_exists('memory_get_usage') && function_exists('memory_get_peak_usage')) {
$this->logger->debug(
sprintf(
$message . ' %d/%dMB memory used',
round(memory_get_usage() / 1024 / 1024),
round(memory_get_peak_usage() / 1024 / 1024)
)
);
} else {
$this->logger->debug($message);
}
$this->rel = $now;
}
public function end(): int {
$now = $this->timeFactory->getTime();
$passed = $now - $this->start;
$this->logger->debug($this->task . " took {$passed}s");
return $passed;
}
}