Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 5 Dołączył: 16.08.2011 Ostrzeżenie: (0%)
|
Witam,
Pewnego dnia stanąłem przed potrzebą zrobienia kopii ogromnej bazy danych oraz jeszcze większej ilości plików. Ponieważ nie mam dostępu do SSH, postanowiłem wykorzystać unixowe komendy przez PHP: ze względu na dużą objętość danych, na których te operacje będą przeprowadzane, skrypt się wykrzaczał. Postanowiłem wtedy podzielić go na kilka kroków, dla przykładu 1. dump bazy danych 2. wgranie dumpa do innej bazy danych 3. kopia plików
jak widać po wykonaniu "kroku" zapisuję w pliku tymczasowym jaki krok jest następny oraz wysyłam nagłówek header('Location: plik.php') celem odświeżenia - wtedy wykonać ma się następny i następny krok. Mój problem polega na tym, że dopóki testuję to z zakomentowanymi liniami odpowiedzialnymi za w/w operacje (zostaje samo "przechodzenie do nast kroku") - wszystko chodzi dobrze, w firebugu widać dokładnie, że wszystkie kroki się wykonują. Problem pojawia się, gdy odkomentuję właściwy kod, tzn w momencie kopiowania jakiegoś bardzo dużego katalogu, lub podczas wykonywania innej, potrzebującej sporo czasu do ukończenia, operacji - praca jest przerywana, tzn. nie wysyła nagłówka o przekierowaniu, w pliku TMP mam elegancko wskazane na jakim kroku przerwało pracę. Dodam, że limit czasu ustawiony na "0", raportowanie błędów mam włączone- jednak takie nie zostają wyświetlane. Ma ktoś jakiś pomysł, dlaczego tak się dzieje i jak temu zaradzić? Pozdrawiam (IMG:style_emoticons/default/wink.gif) EDIT: Dodam, że na każdy krok przydzielona jest tylko jedna komenda uniksowa, tzn w jednym kroku jest tworzony dump bazy, w drugim jest on wgrywany do innej bazy, w trzecim np kopia plików z... do... itd. Ten post edytował vee 18.01.2012, 13:49:00 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 5 Dołączył: 16.08.2011 Ostrzeżenie: (0%)
|
Niestety wciąż home.pl, jest to jedyna tak "niestandardowa" operacja, więc przeskakiwanie na serwer dedykowany tylko z tego powodu niestety nie wchodzi w grę (IMG:style_emoticons/default/wink.gif)
Każde inne wykorzystanie serwera nie wychodzi poza jakieś standardy, właściwie to są to proste strony/portale nie generujące specjalnie dużego transferu czy ruchu. Jeśli chodzi o zamykanie procesu w trakcie jego trwania, nie wydaje mi się to prawdopodobne, ponieważ skrypt wysypuje się po różnych czasach trwania, przeważnie na kroku, gdzie przeprowadzane jest kopiowanie plików. Oczywiście miejsce na serwerze jest, błędów żadnych nie wyświetla. EDIT: Chyba dopatrzyłem się dlaczego tak się dzieje - nie wiem dlaczego, ale przegapiłem następujące. Zwrot z metody CP ląduje w nagłówkach, oto co widzę: "cannot create regular file `/sciezka/sciezka/sciezka/sciezka/settings.php': Permission denied" powyższe powtarza się dla wszystkich plików, z ograniczeniami dostępu. Czy jest możliwe skopiowanie za jednym zamachem zarówno tych plików (z ograniczeniami) jak i tych "publicznych"? Jak poprzez FTP dla pojedynczego pliku ustawiłem CHMOD na 777 - nie pojawił się on w zwrotnym nagłówku, jednak takie rozwiązanie niestety odpada - mowa o kilkuset plikach. EDIT2: oczywiście nie mogę się zalogować jako ROOT (IMG:style_emoticons/default/wink.gif) więc to rozwiązanie odpada. Jeśli się nie da skopiować tych plików ze względu na uprawnienia, to czy można zrobić to tak, żeby operacja pomimo tych błędów była dalej wykonywana? Ten post edytował vee 18.01.2012, 14:51:59 |
|
|
|
vee Podzielenie zasobożernej operacji na kilka kroków 18.01.2012, 13:45:19
Uriziel01 Jesteś pewny że to przekroczenie czasu ?
Dla pewn... 18.01.2012, 14:12:53
vee Krok, który się wywala najczęściej to:
[PHP] pobi... 18.01.2012, 14:18:49
by_ikar http://sypex.net/en/ <-- możesz podłączyć to ch... 18.01.2012, 14:21:23
vee Niestety zewnętrzne rozwiązania odpadają z kilku w... 18.01.2012, 14:24:58
Uriziel01 Hmmm, a na czym to stoi ? Bo widząc `przykręca... 18.01.2012, 14:34:37
adbacz A masz jakoś ładnie ułozony, stworzony katalog/kat... 18.01.2012, 15:27:43
abort 1. Jak nigdy nie jestem zwolennikiem instrukcji ... 18.01.2012, 22:38:08
vee Problem uprawnień rozwiązany;
Główny problem jedna... 19.01.2012, 08:32:44
adbacz A nie mozesz zrobić najpierw jednego kroku, późnie... 19.01.2012, 11:10:33
piotrooo89 wiec możesz to zrobić za pomocą nice i przekierowa... 19.01.2012, 11:21:48
vee @piotrooo89
Ok, komendy wykonują się piorunem, jed... 19.01.2012, 13:30:26
piotrooo89 no możesz w samym php zapisać ile plików miałeś na... 19.01.2012, 13:34:59
vee Mógłbyś mi jeszcze odpowiedzieć na takie pytanie, ... 19.01.2012, 14:00:10
piotrooo89 tak, możesz tak zrobić, każde polecenie możesz kie... 19.01.2012, 14:02:31
vee Może uściślę, czysto dla pewności - w przypadku my... 19.01.2012, 14:05:45
piotrooo89 wydaje mi się na 99.99% że będzie ok:
Kodmysql ... 19.01.2012, 14:10:19
vee Dla potomnych - pliki SQL, w których miał znajdowa... 20.01.2012, 08:13:21 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 12:30 |