![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 5.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich.
Przystępuje do realizacji większego projektu i zastanawiam się nad paroma problemami. Jednym z nich jest system aktualizacji. Najpierw użytkownik musi sprawdzić czy ma aktualną wersje. Logując się do swojego panelu system musi pobrać informację o aktualnej wersji. Nie chce zapisywać w każdej aplikacji dostępu do bazy danych ze względów bezpieczeństwa. Uważam, że lepszym rozwiązaniem będzie pobranie kodu XML generowanego dynamicznie np: www.domena_projektu.pl/last_version_info.xml Co o sądzicie o takim rozwiązaniu? Kolejna sprawa to kwestia już aktualizacji plików. W jaki sposób to wykonać? Jak pobrać pliki przez PHP? Jak je zapisać/podmienić w odpowiednich folderach? Wydaje mi się, że wystąpi problem z chmod dla folderów i plików. Ma ktoś jakieś uwagi na ten temat? A może ktoś się orientuje jak to jest realizowane w Wordpress'ie? -------------------- Nowoczesne rozwiązania dla biznesu wtsoft.pl - kreujemy twoją przyszłość.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 280 Pomógł: 20 Dołączył: 12.12.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Po zalogowaniu do PA przez użytkownika skrypt pobiera np. przez file get contets zawartość www.domena_projektu.pl/last_version_info.php (po co w ogóle struktura xml to tylko 3-4 cyfry), skrypt usuwa kropki, ewentualne literki alfabetu zamienia na liczby a później porównuje. Jeżeli aktualna wersja jest mniejsza to pobiera dany plik (dostępny pod stałym adresem ala last_version.php) i przystępuje do instalacji.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zgadzam się - XML zbędny. Dodałbym jeszcze do propozycji kolegi by skrypt/aplikacja mogła także odwołać się do drugiego pliku gdzie znajdzie listę plików do pobrania.
Co do sposobu pobrania plików to można to zrobić na faktycznie wieeele sposobów. Musisz zrobić coś na styl repozytorium dostępne z poziomu www czy to przez HTTP czy FTP. Następnie pobranie pików (file_get_contents, curl, fopen, czy nawet fsockopen ![]() Ciekawym rozwiązaniem jakie spotkałem, nie pamiętam już gdzie to aktualizacja w formie XML. Podczas wrzucania nowej wersji musi być skrypt który przerobi podany mu katalog wraz z zawartością na plik XML, w którym po kolei doda wszystkie pliki, wraz z ich nazwami i lokacjami. Taki plik XML potem jest łatwy do pobrania i aplikacja podczas aktualizacji przelatuje po tym pliku tworząc/nadpisując odpowiednie pliki z nowymi treściami. MINUS - nadaje się do małych "wagowo" aktualizacji. -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 5.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Hmm no może i macie racje, po co się bawić z bazą danych, dynamicznym XML'em, zbędna praca.
Zastanawiam tylko nad tym jak pobierać i aktualizować tylko niezbędne pliki. Może zapisywać na początku każdego pliku sumę kontrolną treści pliku (MD5). Później przy pobieraniu sprawdzamy pierwsze 32 znaki i jak się różni to pobieramy, jak nie to pomijamy. Gra warta świeczki czy lepiej pobrać wszystko i zaktualizować? -------------------- Nowoczesne rozwiązania dla biznesu wtsoft.pl - kreujemy twoją przyszłość.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ok, opcję aktualizacji masz zawsze dwie
![]() 1. Aktualizacja jako paczka 2. Aktualizacja jako lista I teraz tak: ad 1. Aktualizacja jako paczka polegała by na utworzeniu w serwisie paczki plików, które musza zostać zaktualizowane (dobre przy krytycznych aktualizacjach oraz takich gdzie jest dużo zależności). Czyli to w serwisie musi być paczka, program zasysa i podmienia pliki. ad 2. Aktualizacja jako lista sprowadza się do przechowywania ZAWSZE najnowszych wersji wszystkich używanych plików. Program pobiera listę aktualizacji, lub sprawdza czy jego pliki nie są stare i pobiera te, które wg. siebie potrzebuje. Obie opcje są tak samo porąbane ;P w 1 musisz generować paczki za to pobranie jest łatwe a w drugiej nie martwisz się paczkami ale za to ciężej znaleźć i zaktualizować wszystkie stare pliki... Co do samego wersjonowania to zawsze można zrobić to najłatwiej jak się da ![]() W drugiej jest ciężej- tak jak wspomniałeś trzeba dać jakieś rozróżniki plików (np crc/md5) albo do aplikacji dołączyć liste plików z ich wersjami. Po aktualizacji lista ta też by się aktualizowała - sprawdzenie nowej listy czy jest taka jak stara nie powinno stanowić problemu. A teraz moje zdanie - (czytaj jak ja bym to zrobił) ![]() najprościej! ![]() Wrzucam wersję programu do samego programu. Program sprawdza czy jest paczka z wersją wyższą niż ma, pobiera, aktualizuje, aktualizuje swoją wersję i śmiga... Jeden problem - Aktualizacja może być robiona niezależnie (to znaczy że paczka wersji 1.5.6 ma wszystkie zmiany z wersji poprzednich) lub zależnie (każda paczka ma tylko zmiany w stosunku do poprzedniej wersji - jak mam 1.5.3 to muszę po kolei aktualizować do 1.5.4, 1.5.5 i dopiero 1.5.6) - ja bym stawiał na niezależność ![]() HTH! ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Zainteresuj się PHAR, z pewnością ułatwi Ci to zadanie w tworzeniu paczek.
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 5.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ja też postawię na prostotę i niezależność
![]() Pozdrawiam. -------------------- Nowoczesne rozwiązania dla biznesu wtsoft.pl - kreujemy twoją przyszłość.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 04:15 |