Witajcie , to mój pierwszy post ,programuje od 8 roku życia okresowo i dla siebie. od Atari basic zaczynałem teraz lazarus pod Mac OS i Windows
Amatorem jestem Wiec wybaczcie mi proszę podstawowe błędy gdyby się pojawiły.
Pisze program dla siebie pod badanie naukowe zbierający z wielu urządzeń z uruchomionym programem danych zarówno online jak i offline.
Po połączeniu z internetem i serwerem ftp dana kopia programu pobiera szyfrowany plik binarny z serwera. plik nazwijmy go x.dat. jest to prosty plik bazy danych. (Nie potrzebuje komponentów do tego bo baza jest prosta bardzo i nie mam na razie czasu uczyć się obsługi bardziej skomplikowanych baz)
Następnie program stawia plik znacznik na serwerze aby zablokować w tej czynności inne kopie programu(prosta prewencja kolizji zapisu) porównuje wpisy z własna baza i uzupełnia bazę o nowe wpisy po czym wysyła plik ponownie na serwer.
I tutaj pojawiają się zagrożenie:
Jeśli program podczas wysyłania pliku na serwer zostanie zamknięty albo łącze internetowe przerwane to w pliku na serwerze (tym x.dat) powstanie błąd. Korzystam z ftpsend synapse.
Dlatego mam dwa rozwiązania:
-
Renamefile x.dat na xcopy.dat przed zapisem na serwerze. I w razie wystąpienia błędu kolejna łącząca się z ftp kopia programu przywróci z niej plik x.dat przez kolejne rename...
-
na czas zapisu program ściągnie plik x.dat i zapisze na serwerze ftp jako xcopy.dat bez użycia rename, i dopiero jak to się powiedzie bez błędu rozpocznie zapis nowego pliku x.dat na serwerze po czym usunie xcopy.dat - lub na wszelki wypadek zostawi.
Nie ukrywam ze pierwsza opcja jest bardziej kusząca przez brak transferu danych ale nie wiem jaka jest jej awaryjność- czy również może powstać błąd krytyczny?
Który sposób byście wybrali?
Baza będzie raczej nie większa niż 5-10 Mb i to tylko jeśli będzie dużo użytkowników. Na początek nie więcej niż 1mb a poszczególni użytkownicy stosunkowo rzadko będą ja ściągać. Zwykle 1-2x w tygodniu.
Pozdrawiam
Krzysiek