Frissítéskezelő: állapotgép, ellenőrzések és háttérfeladatok

A frissítés teljes láncának leírása: regisztráció, ellenőrzés, a letöltés és előkészítés állapotgépe, az aktiválás lépései, az egészség-ellenőrzés, a beállítások, a két háttérfeladat és a jogkulcsok.

A Frissítéskezelő a telepítés frissítési folyamatát vezérli a központi release-szerverhez kapcsolódva. A vezérlő vékony: a logika a frissítési szolgáltatás-könyvtárban, az SQL a system/update és a system/migrate modellben él. A jogot egy saját segéd kéri a canAction-on át, ezért a gépi kinyerő nem mutat kulcsot, a kulcsok azonban ténylegesen ellenőrzöttek.

Adatmodell

A táblanevek a telepítés saját előtagjával állnak az adatbázisban.

TáblaSzerep
update_configszerver, csatorna, automatikus mód, időablak, gyakoriság, mentés-cél, regisztráció (azonosító, titok, kulcsverzió), utolsó ellenőrzés eredménye
update_runfrissítési és mentési futások állapotgéppel
update_logfutásonkénti naplósorok
update_backupmentések (dump + kód-zip), ellenőrzöttség
migrationverziózott migrációk története

Folyamat

  1. Regisztráció (update.register): telepítés-azonosító + egyszeri kód a szerver regisztrációs végpontjára; a kapott titok, kulcsverzió, csatorna és üzemeltetési modell a konfigurációba kerül. Helyi módban (ha ez a telepítés a release-szerver) helyi átvitellel.
  2. Ellenőrzés (update.check): aláírt kérés ETag-támogatással; besorolás up_to_date, available, not_allowed, unreachable, revoked, unregistered. Csomagot nem tölt le.
  3. Előkészítés (update.start, update.advance, update.cancel): egyszerre egy futás; az állapotgép 15 másodperces időkeretekben halad: authorize → download (folytatható, tokenenként legfeljebb 3 próba) → verify (manifest-aláírás, méret, SHA-256, PHP- és alapkeret-követelmény, minimális előző verzió) → stage (kicsomagolás a staging könyvtárba, fa-ellenőrzés) → preflight (eltérés, szintaxis, függőség, írhatóság, kétszeres szabad hely) → backup → ready. Jóváhagyás nélkül waiting_approval. A megszakítás csak aktiválás előtt, a staging és a részleges letöltés törlésével.
  4. Aktiválás (update.approve): karbantartási mód 30 perces önlejárattal; a futó ütemező-worker kivárása legfeljebb 60 mp (ha nem szabadul: waiting_window); a mostani verzió helyreállítójának telepítése, webes helyreállítás 24 órára; különbség-mentés; verziózott migrációk a staging fából (hibánál a kód nem cserélődik); séma-kompatibilitás mérése; két átnevezéses könyvtárcsere (az előző fa a previous/ alá); vendor-szinkron; OPcache és sablon-cache ürítése.
  5. Egészség-ellenőrzés: HTTP-próba a catalog api/update.health végpontjára egyszer használható tokennel; ha a szerver nem éri el magát, verify_pending, és a következő admin oldalbetöltés igazolja. Hibás új kódnál automatikus visszacsere, ha a séma additív.
  6. Siker: a telepített verzió emelése, értesítés, jelentés a szervernek; a previous/ legfeljebb 2, a failed/ legfeljebb 1 fát tart meg. A update.retry a hibás verziózott migrációkat futtatja újra.

Háttérfeladatok

FeladatMűködés
update_checkrendszer-szintű, mindig futó; regisztrálatlan telepítésen kihagy; kényszerített ellenőrzés; aktív futás nélkül felveszi a központi kéréseket (telepítést csak engedélyezett központi telepítésnél, különben előkészít és jóváhagyásra vár); egyszer értesít új verzióról; patch módban az automatikusan telepíthető, licencelt PATCH-lépést indítja. Újraütemezés: gyakoriság + a telepítés-azonosítóból képzett 0–59 perc + 0–9 perc véletlen.
update_applyeseményjob: az aktív futást lépteti a worker-zár kivárása nélkül; nem végállapotban 1 perc, jóváhagyásra vagy időablakra várva 15 perc múlva teszi magát újra sorba, duplikáció-védelemmel.

Beállítások és validáció

update.save: szerver URL (csak https://), csatorna (stable, beta, dev), automatikus mód (off, patch), időablak (HH:MM-HH:MM), gyakoriság 1–168 óra, közvetlen telepítés elfogadása, központi telepítési kérés elfogadása, mentés-cél (local, gdrive + fiók + mappa), megőrzött mentések 1–20, értesítési e-mail. Hibakulcsok: error_value, error_window, error_backup_gdrive, error_https. A Google-fiókokat az oldal csak settings joggal tölti be.

Jogosultság

KulcsBesorolásMit nyit
listSYSTEMoldal, állapot, futások, mentések, migrációk
checkSYSTEMellenőrzés
downloadSUBSCRIPTIONelőkészítés; a léptetés és megszakítás download vagy install joggal
installSYSTEMtelepítés, jóváhagyás, újrapróbálás
settings, registerSYSTEMbeállítások, regisztráció
debugSYSTEMa sablonok nem olvassák; érdemi felhasználás nem állapítható meg

Tartalmi hatókör nincs: telepítés-szintű technikai adat. A kiszolgált futás-adatból a token, a manifest, az aláírás és a mentés belső állapota nem kerül ki. A központi szerver a letöltést a client felhasználóinál a system/update + download funkciójoghoz és aktív előfizetéshez köti.

Ismert korlátok

A teljes lánc valódi adatbázison, helyi átvitellel tesztelt; éles központi szerveren, valódi aláíró kulccsal, HTTPS-átvitellel és valódi Drive-archívummal még nem futott.