Obecnie pracuję nad systemem aktualizacji aplikacji internetowych. Będzie działał jak kontrola wersji, gdzie serwer główny jest repozytorium. Różnica między moim systemem a vc polega na tym, że nie można zatwierdzić / wypchnąć itp. Na serwer główny.
Pomysł jest taki:
Użytkownik przechodzi do admin> aktualizacja
Sprawdza dostępność aktualizacji
Repozytorium główne odsyła listę wszystkich najnowszych plików wersji i ich sum kontrolnych
Aplikacja sprawdza tę listę względem plików na serwerze. Jeśli niektóre są nieaktualne / nie zgadzają się z sumą kontrolną, poproś o zawartość tych plików i przepisz pliki na serwerze.
Moje pytanie brzmi: co jeśli sam plik aktualizacjiwymaga aktualizacji ... jak mogę to zrobić? Czy będę mógł go zastąpić, nawet jeśli jest on aktualnie wykonywany? A może byłby błąd i cała rzecz wybuchnie? Domyślam się, że bieżący plik jest przechowywany w pamięci RAM, więc może się nadpisać, ale nie jestem pewien.
Dzięki
Odpowiedzi:
0 dla odpowiedzi № 1Oto jeden ze sposobów, w jaki możesz to zrobić:
- Zezwalaj tylko na aktualizację plików głównych za pośrednictwem strony „superadmin”
- Utwórz „rejestr”, w którym dowolna część programu ma do niego dostęp (niektóre tylko do odczytu, a inne do pisania)
- Gdy plik jest aktualizowany przez superadmin, sprawdza rejestr, czy plik jest czytany
- Gdy superadmin aktualizuje dowolny plik, ustawia „rejestr” informujący, że dany plik jest aktualizowany (w efekcie blokuje go)
- Gdy użytkownik próbuje zaktualizować system, sprawdza rejestr, jeśli plik jest ustawiony na „zablokowany”, nie będzie próbował go pobrać
- Gdy użytkownik jest w stanie go pobrać, ustawia rejestr informujący, że plik jest odczytywany (i wyłącza go po zakończeniu)