![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 76 Pomógł: 1 Dołączył: 5.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
mam skrypt w php który otwiera pliki kolejno 1, 2, 3 itd, jest ich 130tys. Czyta je i wyciąga z nich nazwiska. Oczywiście dzieje się to w pętli for. Ustawiłem for 1 do 1000. Leciał i wypluwał te naziwska. Zauważyłem, że po jakimś czasie zaczyna to robić coraz wolniej i wolniej. W końcu skończył, ale po tym maszyna strasznie muliła, czas reakcji był około 15-20 sekund, po jakimś czasie samo się unormowało. W międzyczasie sprawdzałem, CPU i MEM nie skakało, ale w logach znalazłem, ze numproc (wątków) przewyższyło o 2500(!) Czy php nie zrzuca bufora w pętli? tylko trzyma go aż do samego końca? Co mogę zrobić żeby wymusić przy końcówce pętli zrzucenie wszystkiego co zbędne? Dzięki! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 262 Pomógł: 39 Dołączył: 12.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
Pokaż kod.
Funkcja, o którą pytasz to flush, ale mam dziwne przeczucie, że to nie ma nic do rzeczy. Może np. nie zamykasz plików? I jaki jest sens plucia tylu rekordów? Nie lepiej sobie zapisać do pliku tekstowego i go ściągnąć albo nawet do bazy danych i mieć pełną swobodę? Ten post edytował Bags_Bunny 24.04.2011, 01:23:33 -------------------- rm -rf /*
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 76 Pomógł: 1 Dołączył: 5.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
może powinienem unsetować buffer za każdym razem? Co do plików to są one na zewnętrznym serwerze, używam do tego curl'a. TO ważne? Schemat jest taki od 1 to 1000, wykonuj <instruckje curla: init, setopt, exec, close> <filtrowanie: preg_match_all'em> <printowanie wyników> <dodatkowe warunki tworzące dodatkowe pętle for> koniec (i znów od początku) oczywiscie zrzucam to w powłoce ( ~# time php dump.php 1 1000 >> 1to1000.dump ) Dzięki! Ok, wrzucam ![]()
Ten post edytował Morfi777 24.04.2011, 01:59:33 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 18:37 |