Weitere Checks programmieren

Mit ein wenig Programmierkenntnissen hast du auch die Möglichkeit, bisher nicht unterstützte Health Checks für andere Funktionen durchführen zu lassen. Beispielsweise die Anbindung von Redis.

Datenbank Beispiel

Zuerst musst du eine PHP-Klasse in deinem Plugin schreiben, der die Logik beinhaltet. Wichtig ist, dass das Interface HealthCheckInterface implementiert wird.

<?php declare(strict_types=1);

namespace ShopStudio\HealthCheck\Core\HealthCheck;

use Doctrine\DBAL\Connection;

class DatabaseHealthCheck implements HealthCheckInterface
{
    public const NAME = 'database';

    private Connection $connection;

    public function __construct(Connection $connection)
    {
        $this->connection = $connection;
    }

    public function getName(): string
    {
        return self::NAME;
    }

    public function check(): ?HealthCheckResult
    {
        $up = true;

        try {
            $this->connection->executeQuery($this->connection->getDatabasePlatform()->getDummySelectSQL());
        } catch (\Throwable $throwable) {
            $up = false;
        }

        return new HealthCheckResult($up, ['additional' => 'payload']);
    }
}

Anschließend noch die PHP-Klasse als Service in der services.xml implementieren. Vergesse nicht den Service als shop-studio.health-check zu taggen.

<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>

        <service id="ShopStudio\HealthCheck\Core\HealthCheck\DatabaseHealthCheck">
            <argument type="service" id="Doctrine\DBAL\Connection" />
            <tag name="shop-studio.health-check"/>
        </service>

    </services>
</container>

Last updated