![]() |
![]() |
![]()
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: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
1. Jak nigdy nie jestem zwolennikiem instrukcji "system", tak właśnie tu do zmiany praw dostępu bym właśnie to zastosował.
2. Drobna uwaga... Piszesz, że przez FTP jesteś w stanie zmienić prawa i wszystko jest OK. Czy możesz podać usera, grupę i prawa dostępu dla plików, które nie chcą się skopiować, zanim im nie zmienimy praw? 3. Kontynuując punkt poprzedni: utwórz jakiś plik via apache/php (albo wykorzystaj ten plik TMP opisywany wcześniej), jak również wgraj plik normalnie przez klienta FTP. Porównaj wartości usera, grupy i praw do w/w plików, pomoże Ci w tym instrukcja fstat Przy okazji: "ogromna baza", "jeszcze większa ilość plików" - czy mógłbyś choć trochę przybliżyć wartości, o których piszesz? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 11:25 |