Génération PDF asynchrone : jobs avec polling + progression
All checks were successful
Deploy / deploy (push) Successful in 20s

- Nouveau système de jobs : POST /jobs (async), GET /jobs/{id} (status), GET /jobs/{id}/result (PDF), DELETE /jobs/{id}
- worker.php spawné en arrière-plan via nohup, lit la sortie pagedjs-cli ligne par ligne via proc_open et écrit la progression dans tmp/job_{id}.status.json
- Migration de pagedjs-cli en install local (node_modules) pour persister le patch protocolTimeout via patch-package
- CI : déploie package.json, worker.php, patches/, et lance npm install (qui réapplique les patches via postinstall)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-05-04 09:37:00 +02:00
parent a005c982bd
commit 0b954ed494
10 changed files with 506 additions and 6 deletions

View file

@ -11,13 +11,19 @@ return [
'tmp_dir' => '/var/www/web2print/tmp',
'log_file' => '/var/www/web2print/logs/app.log',
// Paged.js CLI
'pagedjs_bin' => '/usr/bin/pagedjs-cli', // Vérifier avec: which pagedjs-cli
'pagedjs_timeout' => 60, // secondes
// Paged.js CLI (install local via npm dans /var/www/web2print)
'pagedjs_bin' => '/var/www/web2print/node_modules/.bin/pagedjs-cli',
'pagedjs_timeout' => 240, // secondes
// PHP CLI (utilisé pour spawn le worker async)
'php_bin' => '/usr/bin/php',
// Jobs asynchrones
'job_max_age' => 3600, // 1h, age au-delà duquel un job orphelin est supprimé
// Limites
'max_html_size' => 5 * 1024 * 1024, // 5 MB
'max_execution_time' => 90,
'max_execution_time' => 300,
// Options PDF par défaut
'pdf_defaults' => [