![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 1 Dołączył: 20.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
mam problem z dość sporym instalatorem. W skrócie, skrypt instaluje różnego rodzaju aplikacje (głównie cms-y) na serwerze. Idea jest prosta - instalator kopiuje elementy aplikacji (core, dodatkowe moduły, szablony, grafikę itp) z różnych źródeł (ftp, svn, baza) na serwer, następnie odpala na serwerze odpowiedni instalator który aplikację konfiguruje i po sobie zamiata. Wszystko działa tak jak trzeba, niestety za wolno. Z uwagi na obciążenie klastra cały proces może trwać i pół godziny, podczas gdy apache ucina połączenie i wysyła internal server error po 15 minutach, nie bacząc na time limit skryptu php (skrypt kontynuuje działanie i robi wszystko co powinien, ale urywa się komunikacja i nie ma logów). Gros czasu zajmuje rozpakowywanie archiwów i kopiowanie plików w odpowiednie miejsca. I tu pytanie: jak można to przyspieszyć? Próbowałem już zastąpić archiwum zip tar-em (Archive_Tar z PEAR) , ale nie daje to jakiejś znaczącej różnicy w czasie. Timeout apacha jest nie do ruszenia, podobnie jak trzymanie lokalnej kopii plików na klastrze (za dużo możliwych kombinacji). Posiłkowanie się exec-em też raczej nie wchodzi w grę. na razie przychodzi mi na myśl albo podzielenie całej instalacji na krótsze procesy (wszystko jest odpalane z panelu administracyjnego via ajax), albo odpalanie crona, np. co kwadrans. Może jeszcze odzyskiwanie logów ex post (ale wtedy trzeba wiedzieć kiedy instalator skończył) Może ktoś ma jakieś lepsze pomysły? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat na razie przychodzi mi na myśl albo podzielenie całej instalacji na krótsze procesy (wszystko jest odpalane z panelu administracyjnego via ajax), http://www.alternateinterior.com/2007/05/m...ies-in-php.html Naprościej będzie odpalić ten skrypt z opóźnieniem i np. wysyłać powiadomienie na maila o zakończeniu instalacji. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 1 Dołączył: 20.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
http://www.alternateinterior.com/2007/05/m...ies-in-php.html Naprościej będzie odpalić ten skrypt z opóźnieniem i np. wysyłać powiadomienie na maila o zakończeniu instalacji. Mail już jest, problem polega na tym żeby operator dostał loga na ekran ... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
No to pozostaje jakiś window.open + odświeżanie co parę sekund, a skrypt sprawdza, czy np. instalator utworzył pewien plik.
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 1 Dołączył: 20.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 4 Dołączył: 7.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
a nie mozesz rozdzielic pliku wykonujacego instalacje od prezentujacego pasek postepu? i ewentuanie podzielic plik wykonujacy instalacje na etapy i logowac kazdy zakonczony pomyslnie etap?
wtedy wyswietlasz uzytkownikowi strone z postepem 0%, odpalasz twoj skrypt instalacji przez fsockopen w tle, ewentualnie respawn jak podzielisz na etapy instalacji zeby wywolywal sam siebie po zakonczonym etapie i za pomoca ajaxa co iles tam sekund zmieniaj zawartosc paska postepu instalacji na podstawie odczytu logow - w logach poszczegolne etapu instalacji beda zapisywac pomyslne zkaonczenie? Ten post edytował guitarnet.pl 21.04.2009, 16:10:16 -------------------- Skrypty php, ajax, javascript
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
fsockopen" title="Zobacz w manualu PHP" target="_manual wymusi mu synchronizację ze skryptem nadzorującym...
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 1 Dołączył: 20.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dla potomności: w końcu wybrałem najprostsze rozwiązanie - instalator podzielony na 6 części + javascript odpalający kolejne $.getJSON po zakończeniu poprzedniego.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 31.07.2025 - 10:43 |