46d7c461c5e99532f1a5390f45894eee78561c41
Bug rapporté depuis le backoffice : cliquer « 🔁 Hash » sur une nouvelle version renvoyait un 500 Internal Server Error générique (« Please contact the server administrator at postmaster@asterionvr.com »). L'opérateur ne pouvait donc plus signer une release après upload SFTP du ZIP. Root cause : hash_file('sha256', $zip) sur un fichier de 14 Go via le SAN mutualisé OVH prend 5-10 min. Le max_execution_time PHP par défaut (30-60s) tue le process bien avant. Apache remonte alors 500 avec son boilerplate par défaut, sans log utile pour l'opérateur. Fix en défense en profondeur : 1. set_time_limit(0) + ignore_user_abort(true) au début de run(). Couvre TOUS les callers (admin web, cron, CLI). ignore_user_abort évite qu'un refresh de l'onglet backoffice interrompe un hash en cours (10 min = ~un café — l'opérateur peut être tenté de refresh). 2. Passage de hash_file() → hash_init + hash_update_stream en boucle 16 Mo par chunk. Deux bénéfices : • flush() entre chaque chunk = heartbeat pour le proxy Apache/OVH front, évite un timeout côté serveur web même si PHP a le droit de continuer. • set_time_limit(300) glissant à chaque chunk = si un chunk prend +5 min c'est vraiment un disque HS, pas juste un gros fichier — on n'est pas bloqué sur un unique timer géant. Mémoire : hash_update_stream() ne buffere pas, streaming pur, aucun risque d'OOM même sur 14 Go. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PS_Launcher
Launcher Windows pour l'application UE5 PROSERVE : gère plusieurs versions cohabitantes, téléchargement et installation de nouvelles versions depuis un serveur, validation de license, release notes.
Composants
src/— Solution C# / .NET 8 / WPF (Visual Studio 2022 + SDK .NET 8 requis)PSLauncher.App: UI WPF (style Epic Games Launcher)PSLauncher.Core: services (Manifest, Download, Install, Process…)PSLauncher.Models: DTOs partagés
server/— Code serveur PHP 8 (à déployer souswww/PS_Launcher/sur OVH mutualisé)
Démarrage rapide (dev)
dotnet build PS_Launcher.sln
dotnet run --project src/PSLauncher.App
Pour produire un binaire autonome distribuable (un seul .exe ~70 Mo) :
dotnet publish src/PSLauncher.App -c Release
# Sortie : src/PSLauncher.App/bin/Release/net8.0-windows/win-x64/publish/PSLauncher.exe
Configuration locale
Le launcher écrit sa config dans %LocalAppData%\PSLauncher\config.json au premier lancement.
Édite serverBaseUrl pour pointer vers ton serveur :
{
"serverBaseUrl": "https://ton-domaine.com/PS_Launcher/api",
"installRoot": "C:\\ASTERION\\GIT\\PS_Launcher\\ASTERION_VR"
}
État (roadmap)
- ✅ v0.1 — Scan + lancement de versions installées
- ✅ v0.2 — Manifest distant, download ZIP, install cohabitante, release notes Markdown
- ⏳ v0.3 — Reprise (HTTP Range), retry Polly, state.json
- ⏳ v0.4 — License (MySQL + Ed25519 + DPAPI)
- ⏳ v0.5 — Settings, suppression manuelle versions, toasts
- ⏳ v1.0 — Auto-update launcher, MSI installer
Voir le plan détaillé pour la roadmap complète.
Licence / interne
Repo interne ASTERION. Ne pas distribuer.
Description
Languages
C#
46%
HTML
29%
PHP
23.3%
CSS
0.6%
Batchfile
0.5%
Other
0.6%