zend-blog-3-backend

Форк
0
/
BlogServerErrors.php 
63 строки · 1.7 Кб
1
<?php
2

3
namespace App\Cron\Hourly;
4

5
use App\Cron\HourlyCronServiceInterface;
6
use App\Doctrine\DBAL\Type\MillisecondsDateTime;
7
use App\Entity\SystemParameters;
8
use App\Repository\TrackingRepository;
9
use App\Service\SystemParametersStorage;
10

11
class BlogServerErrors implements HourlyCronServiceInterface
12
{
13
    /**
14
     * @var TrackingRepository
15
     */
16
    private TrackingRepository $repository;
17

18
    /**
19
     * @var SystemParametersStorage
20
     */
21
    private SystemParametersStorage $paramStorage;
22

23
    /**
24
     * @var array
25
     */
26
    private array $errors = [];
27

28
    /**
29
     * @param TrackingRepository $repository
30
     * @param SystemParametersStorage $paramStorage
31
     */
32
    public function __construct(TrackingRepository $repository, SystemParametersStorage $paramStorage)
33
    {
34
        $this->repository = $repository;
35
        $this->paramStorage = $paramStorage;
36
    }
37

38
    public function run(): void
39
    {
40
        $from = $this->paramStorage->getParameter(SystemParameters::ERRORS_5XX_CHECK) ?? '2023-06-01 00:00:00';
41
        $now = (new \DateTime())->format(MillisecondsDateTime::FORMAT_TIME);
42

43
        $this->errors = $this->repository->getDataAboutServerErrors($from, $now);
44
        $this->paramStorage->saveParameter(SystemParameters::ERRORS_5XX_CHECK, $now);
45
    }
46

47
    /**
48
     * @return string|null
49
     */
50
    public function getMessage(): ?string
51
    {
52
        if (count($this->errors)) {
53
            $message = '';
54
            foreach ($this->errors as $error) {
55
                $message .= sprintf("\n%d %s", $error['cnt'], $error['requestURI'] ?: 'articleID: ' . $error['postID']);
56
            }
57

58
            return $message;
59
        }
60

61
        return null;
62
    }
63
}
64

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.