[FIX] simulate: proc_open streaming SSE (pattern lg231) + NIS2_SSE flag

- public/simulate-nis2.php: riscritta con proc_open come lg231 test-runner.
  Lancia simulate-nis2.php come subprocess CLI con NIS2_SSE=1, streama
  ogni riga SSE al browser immediatamente senza buffering Apache/FPM.
  Stderr del subprocess → eventi SSE 'error' visibili nel terminale.

- simulate-nis2.php: aggiunto supporto NIS2_SSE=1 (env var).
  Quando NIS2_SSE=1, IS_CLI=false → output SSE anche da sottoprocesso.
  API_BASE usa sempre server prod in modalità subprocess.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-03-10 10:51:05 +01:00
co-authored by Claude Sonnet 4.6
parent 0a3f2d15e2
commit 49c62ab811
2 changed files with 97 additions and 19 deletions
+8 -5
View File
@@ -32,15 +32,18 @@ declare(strict_types=1);
define('SIM_VERSION', '1.0.0');
define('DEMO_EMAIL', getenv('NIS2_DEMO_EMAIL') ?: 'demo@nis2agile.it');
define('DEMO_PWD', 'NIS2Demo2026!');
define('IS_CLI', php_sapi_name() === 'cli');
define('IS_WEB', !IS_CLI);
// NIS2_SSE=1 → forza output SSE anche da CLI (usato dal wrapper public/ con proc_open)
$_sseMode = (bool)getenv('NIS2_SSE');
define('IS_CLI', php_sapi_name() === 'cli' && !$_sseMode);
define('IS_WEB', !IS_CLI);
// URL base API — rileva automaticamente ambiente
if (IS_CLI) {
// Sul server Hetzner: Apache serve /var/www/nis2-agile su https://nis2.agile.software/
if (IS_CLI || $_sseMode) {
// CLI diretto o subprocess: usa server prod (o override da env)
define('API_BASE', getenv('NIS2_API_BASE') ?: 'https://nis2.agile.software/api');
} else {
// In web: usa URL relativo allo stesso host
// Web request diretto: ricostruisce URL dal $_SERVER
$proto = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'] ?? 'localhost';
define('API_BASE', "{$proto}://{$host}/api");