![]() |
![]() |
![]()
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... |
|
|
![]() |
![]()
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.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 25 Dołączył: 27.01.2007 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. 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 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 20:29 |