Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przyspieszenie działania skryptu
ts23
post 20.04.2009, 14:53:57
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
erix
post 20.04.2009, 18:01:45
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!
Go to the top of the page
+Quote Post
ts23
post 21.04.2009, 12:09:17
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 20.03.2009

Ostrzeżenie: (0%)
-----


Cytat(erix @ 20.04.2009, 19:01:45 ) *
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 ...
Go to the top of the page
+Quote Post
erix
post 21.04.2009, 14:51:42
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!
Go to the top of the page
+Quote Post
ts23
post 21.04.2009, 15:20:12
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 20.03.2009

Ostrzeżenie: (0%)
-----


Cytat(erix @ 21.04.2009, 15:51:42 ) *
No to pozostaje jakiś window.open + odświeżanie co parę sekund, a skrypt sprawdza, czy np. instalator utworzył pewien plik.

Na tym się pewnie skończy sad.gif
Go to the top of the page
+Quote Post
guitarnet.pl
post 21.04.2009, 16:09:50
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
Go to the top of the page
+Quote Post
erix
post 21.04.2009, 19:29:55
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!
Go to the top of the page
+Quote Post
ts23
post 24.04.2009, 19:01:16
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 10:43