<?php
require_once __DIR__ . '/vendor/autoload.php';
use GreenCode\EcoProfiler;
use GreenCode\ConfigLoader;
use GreenCode\Providers\StaticProvider;
use GreenCode\Exporters\JsonExporter;
use GreenCode\Exporters\MemoryExporter;
// 1. Chargement de la configuration (incluant les nouveaux seuils de Rating)
$settings = ConfigLoader::load('settings');
$carbonData = ConfigLoader::load('carbon_data');
// 2. Initialisation du fournisseur (Intensité carbone moyenne par pays)
$provider = new StaticProvider($carbonData['averages']);
/**
* SCÉNARIO A : Mode Stateless (Cloud-Native / API)
* Idéal pour renvoyer le score directement dans une réponse JSON sans toucher au disque.
*/
$profilerStateless = new EcoProfiler(
$provider,
$settings,
new MemoryExporter() // Zéro écriture disque
);
$profilerStateless->start();
// --- Simulation d'une logique métier efficiente ---
usleep(5000);
// ---------------------------------------------------
// On arrête et on récupère le rapport directement dans une variable
$apiReport = $profilerStateless->stop('FR', [
'mysql_query' => 2,
'redis_get' => 10
]);
echo "=== MODE STATELESS (API) ===<br>";
echo "Note Carbone : " . $apiReport['ecology']['rating'] . "<br>";
echo "Impact Total : " . $apiReport['ecology']['total_co2'] . " gCO2e<br><br>";
/**
* SCÉNARIO B : Mode Audit (Enregistrement de rapport)
* Idéal pour générer un historique de performance environnementale.
*/
$profilerAudit = new EcoProfiler(
$provider,
$settings,
new JsonExporter() // Enregistre dans /reports/ défini dans settings.php
);
$profilerAudit->start();
// --- Simulation d'un processus plus lourd ---
for($i=0; $i<100000; $i++) { $x = sqrt($i); }
// --------------------------------------------
$auditReport = $profilerAudit->stop('DE', [
'external_api_call' => 1
]);
echo "=== MODE AUDIT (FILE) ===<br>";
echo "Rapport généré avec succès dans : " . ($settings['export_path'] ?? 'dossier par défaut') . "<br>";
echo "Statut de l'export : " . $auditReport['meta']['export_log'] . "<br>";
// 3. Exemple de vérification du Green SLA (Budget Carbone)
if ($auditReport['ecology']['budget_exceeded']) {
echo "?? ALERTE : Le budget carbone configuré dans settings.php a été dépassé !";
}
|