![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 13.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mam serwer z zainstalowaną obsługą rar. Archiwa, które trzeba wypakować zawierają średnio 1500 niewielkich plików tekstowych.
Kod wypakowujący wygląda następująco:
Niestety - serwer kończy pracę po wypakowaniu 119-120 plików. Sprawdzałem wielokrotnie kod, próbowałem przeróżnych rozwiązań - nic nie pomaga. Pliki rar ma ok 3MB, zwiększana była pamięć memory_limit do 64M, nic nie dało. Serwer po prostu przerywa pracę, nie ma żadnych komunikatów błędu, cisza. Dodam, że mechanizm jest uruchamiany z crona, więc operacja musi się zamknąć w jednym wywołaniu. Czy ktoś się spotkał z tym zagadnieniem? Może jest jakaś inna metoda, inna biblioteka, która pozwoli obejść ten problem? Ten post edytował pablo_w 13.02.2010, 18:05:44 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Ok, zwiększyłeś ilość pamięci, ale o set_time_limit zapomniałeś?
Poza tym, nie masz binarki unrar w systemie? O wiele lepiej będzie, gdy zrobisz to samodzielną aplikacją niż niepotrzebnie zaciągnięsz do tego PHP. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1500 niewielkich plików tekstowych Cytat Serwer po prostu przerywa pracę No sorry Winetou, serwer nie został stworzony po to, by wykonywał każdą komendę aż do dnia Sądu Ostatecznego, jest coś takiego jak timeout, w wypadku PHP to: http://pl.php.net/manual/pl/function.set-time-limit.php Musisz pliki wypakowywać na raty, wywołując wiele razy ten sam skrypt z parametrem liczby rekordów lub wywoływać go co jakiś czas dopóki wszystko nie zostanie rozpakowane. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 13.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ok, zwiększyłeś ilość pamięci, ale o set_time_limit zapomniałeś? Cytat serwer nie został stworzony po to, by wykonywał każdą komendę aż do dnia Sądu Ostatecznego, jest coś takiego jak timeout, w wypadku PHP to: http://pl.php.net/manual/pl/function.set-time-limit.php Po pierwsze, skrypt odpalany jest z crona, więc - z tego co się orientuję - ustawienie limitu czasu wykonywania nie ma związku. Próbowałem zresztą i tego, bez skutku. Widać wyraźnie, że jeszcze daleko do przekroczenia aktualnego czasu wywołania. Te pliki na prawdę są lekkie, skrypt kończy działanie po ok 1 sekundzie. W dodatku nie pojawia się komunikat o przekroczeniu czasu, a błędy są raportowane. Cytat O wiele lepiej będzie, gdy zrobisz to samodzielną aplikacją niż niepotrzebnie zaciągnięsz do tego PHP To prawda, ale kłopot w tym, że jestem w stanie działać tylko w obrębie php. Poza tym aktualny skrypt z założenia powinien być całkowicie ok, ale tak nie jest - i szukam odpowiedzi, czy nie wystarczy po prostu czegoś przekonfigurować, czy nie jest to jakiś błahy powód. Ten post edytował pablo_w 16.02.2010, 09:23:21 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat więc - z tego co się orientuję - ustawienie limitu czasu wykonywania nie ma związku. Próbowałem zresztą i tego, bez skutku. Gwoli ścisłości, nie ma znaczenia, w jaki sposób wywołujesz interpreter. Limit czasu obowiązuje w ramach skryptu, a nie sposobu jego wywołania. Cytat skrypt kończy działanie po ok 1 sekundzie. A skąd wiesz? Na tym samym serwerze sprawdzasz? Jeśli na tym samym, to podejrzewam, że problem wynika z innej konfiguracji interpreterów - inna dla WWW, inna wywoływana przez cron. Spróbuj przenieść skrypt do katalogu serwera www i niech cron odpala zadanie pobrania strony, a nie sam interpreter (np. wget http://fdsfsdfsdf/skrypt.php zamiast php -f /home...). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 23:55 |