Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt wykonuje się ponad 10 minut, po czym się wysypuje ;)
kilas88
post
Post #1





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

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


Witam,

Nie bardzo wiem jak nazwać temat, ale mam dość nietypowy problem i nawet nie wiem od czego zacząć, by go rozwiązać. Otóż mam skrypt, który wykonuje się kilka, czasem kilkanaście lub kilkadziesiąt minut.

Skrypt ten przetwarza dokument HTML (książkę w wersji HTML), która ma sporo tekstu, od 10 MB wzwyż. Książkę muszę przepuścić przez kilka wyrażeń regularnych i HTMLPurifier (czyli sporo się tam dzieje). Całość powinno wykonywać się kilkanaście minut. Niestety nie wykonuje się - serwer Apache po 10 minutach sam się resetuje (używam WampServer pod XP). Chrome wywala Error 101: Strona internetowa jest niedostępna, natomiast Opera "Połączenie przerwane przez serwer".

Gdzie szukać rozwiązania? Oczywiście mam ustawione odpowiednio memory_limit czy max_execution_time na odpowiednio duże wielkości.

Ps. gdy dam plik HTML ważący powiedzmy 5MB i wykonujący się 5 minut to nic się nie wysypuje...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
michaJlS
post
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 9
Dołączył: 21.05.2004
Skąd: Glogau/Breslau

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


Zwiększ sobie limit ilości RAMu i czasu wykonywania skryptu, ew. odpal to z linii komend. Na windowsie też można.
Go to the top of the page
+Quote Post
kilas88
post
Post #3





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

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


Cytat(michaJlS @ 21.06.2011, 17:49:50 ) *
Zwiększ sobie limit ilości RAMu i czasu wykonywania skryptu, ew. odpal to z linii komend. Na windowsie też można.

nie da rady

Niestety problemu dalej nie rozwiązałem. Mam ogromne dokumenty HTML i muszę je dzielić na kilka mniejszych. W jaki sposób to osiągnąć, może ktoś coś podobnego robił kiedyś? (IMG:style_emoticons/default/wink.gif)

Ten post edytował kilas88 22.06.2011, 00:21:06
Go to the top of the page
+Quote Post
zegarek84
post
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(kilas88 @ 22.06.2011, 01:20:48 ) *
nie da rady

Niestety problemu dalej nie rozwiązałem. Mam ogromne dokumenty HTML i muszę je dzielić na kilka mniejszych. W jaki sposób to osiągnąć, może ktoś coś podobnego robił kiedyś? (IMG:style_emoticons/default/wink.gif)

poszukaj w google pod hasłami SAX PHP.
Przy parsowaniu dużych plików XML korzystam z XML Parser (nie jest wczytywany cały plik na raz) - jednak musisz napisać sobie obiekt/klasę routera zdarzeniowego do przekierowywania na odpowiednie metody w danym momencie...

możesz skorzystać także z XMLReader - całość też możesz obudować jakimś interfejsem zdarzeniowym (zdarzeniówka chyba tu się najlepiej sprawdzi) i obrabiać tylko to co potrzebne... w sumie z niego nie korzystałem ale zdarzeniowy interfejs możesz oprzeć o metodę read i sprawdzać nodeType

jeśli przekraczasz pamięć, to nie możesz na raz wczytać całego dużego dokumentu - obie powyższe klasy umożliwiają Ci parsowanie dokumentu partiami i o ile dobrze to rozpiszesz sobie umożliwiają przeglądanie struktury drzewa ;]

Ten post edytował zegarek84 22.06.2011, 09:53:16
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 20:29