Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przyspieszenie działania skryptu
Forum PHP.pl > Forum > PHP
ts23
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?
erix
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.
ts23
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 ...
erix
No to pozostaje jakiś window.open + odświeżanie co parę sekund, a skrypt sprawdza, czy np. instalator utworzył pewien plik.
ts23
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
guitarnet.pl
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?
erix
fsockopen" title="Zobacz w manualu PHP" target="_manual wymusi mu synchronizację ze skryptem nadzorującym...
ts23
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.