Ajouter un health check
Ce guide montre comment étendre l'endpoint GET /health avec des contrôles de dépendances en utilisant HealthCheckInterface.
Prérequis : Vous avez une application NENE2 fonctionnelle. Sinon, commencez par le Tutoriel.
Fonctionnement des health checks
GET /health retourne toujours un payload de base :
json
{ "service": "NENE2", "status": "ok", "timestamp": "2026-05-18T12:00:00+00:00" }Lorsque vous enregistrez des implémentations de HealthCheckInterface, l'endpoint ajoute une map checks :
- Tous les checks réussissent →
200 OK,"status": "ok", chaque check affiche"ok" - Un check échoue →
503 Service Unavailable,"status": "degraded", le check en échec affiche"error"
Démarrage rapide
php
use Nene2\Http\HealthCheckInterface;
use Nene2\Http\RuntimeApplicationFactory;
use Nyholm\Psr7\Factory\Psr17Factory;
final class CacheHealthCheck implements HealthCheckInterface
{
public function name(): string { return 'cache'; }
public function check(): bool { return $this->ping(); }
private function ping(): bool { return true; }
}
$psr17 = new Psr17Factory();
$app = (new RuntimeApplicationFactory(
$psr17,
$psr17,
healthChecks: [new CacheHealthCheck()],
))->create();Réponse saine (200 OK) :
json
{ "service": "NENE2", "status": "ok", "timestamp": "...", "checks": { "cache": "ok" } }Réponse dégradée (503 Service Unavailable) :
json
{ "service": "NENE2", "status": "degraded", "timestamp": "...", "checks": { "cache": "error" } }Utiliser l'implémentation de référence DatabaseHealthCheck
src/Example/Health/DatabaseHealthCheck est un check prêt à l'emploi pour la connectivité PDO. Il fait partie de src/Example/ — copiez-le et adaptez-le à votre propre projet.
php
use Nene2\Example\Health\DatabaseHealthCheck;
$app = (new RuntimeApplicationFactory(
$psr17,
$psr17,
healthChecks: [new DatabaseHealthCheck($pdoConnection)],
))->create();Remarque :
DatabaseHealthCheckse trouve danssrc/Example/— c'est une implémentation de référence, pas une surface d'API stable. Copiez-la dans votre application et adaptez-la à vos besoins.
Plusieurs health checks
Passez autant de checks que nécessaire. Tout échec dégrade le statut global.
php
$app = (new RuntimeApplicationFactory(
$psr17,
$psr17,
healthChecks: [
new DatabaseHealthCheck($pdoConnection),
new CacheHealthCheck($redis),
new ExternalApiHealthCheck($httpClient),
],
))->create();Gérer les exceptions dans les checks
Si check() lève une exception, le framework la traite comme false — le statut devient "degraded", le check affiche "error". Vous n'avez pas besoin de capturer les exceptions dans check().
Étape suivante
Consultez Endpoints HTTP pour le schéma complet de réponse /health, ou Ajouter la limitation de débit pour la protection des requêtes.