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ábla | Szerep |
|---|---|
update_config | szerver, 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_run | frissítési és mentési futások állapotgéppel |
update_log | futásonkénti naplósorok |
update_backup | mentések (dump + kód-zip), ellenőrzöttség |
migration | verziózott migrációk története |
Folyamat
- 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. - Ellenőrzés (
update.check): aláírt kérés ETag-támogatással; besorolásup_to_date,available,not_allowed,unreachable,revoked,unregistered. Csomagot nem tölt le. - 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ülwaiting_approval. A megszakítás csak aktiválás előtt, a staging és a részleges letöltés törlésével. - 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 aprevious/alá); vendor-szinkron; OPcache és sablon-cache ürítése. - Egészség-ellenőrzés: HTTP-próba a catalog
api/update.healthvé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. - Siker: a telepített verzió emelése, értesítés, jelentés a szervernek; a
previous/legfeljebb 2, afailed/legfeljebb 1 fát tart meg. Aupdate.retrya hibás verziózott migrációkat futtatja újra.
Háttérfeladatok
| Feladat | Működés |
|---|---|
update_check | rendszer-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_apply | esemé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
| Kulcs | Besorolás | Mit nyit |
|---|---|---|
list | SYSTEM | oldal, állapot, futások, mentések, migrációk |
check | SYSTEM | ellenőrzés |
download | SUBSCRIPTION | előkészítés; a léptetés és megszakítás download vagy install joggal |
install | SYSTEM | telepítés, jóváhagyás, újrapróbálás |
settings, register | SYSTEM | beállítások, regisztráció |
debug | SYSTEM | a 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.