Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Maximum execution time of 60 seconds exceeded
Forum PHP.pl > Forum > Przedszkole
L_Devil
400 linijkowy program bez żadnej pętli, rekurencji, itp. wykonuje się ponad 60 sekund. Jak po raz pierwszy to zauważyłem to mnie zatkało. Powstawiałem echo microtime co 25 linijek. Efekt? Okazało się że ponad 30 sekund wykonują się polecenia str_replace (około 75, każdy operuje na innych zmiennych więc ciężko wcisnąć w pętle, albo przekazać argumenty jako tablicę - trzeci i tak musi być stringiem), po czym dochodzimy do polecenia
  1. <?php
  2. /* Wyrzucenie wszystkiego co jest pomiędzy dwoma komentarzami html */
  3. $skin = substr($skin, 0, strpos($skin, '<!-- BEGIN stats_row -->') ) . substr($skin, (strpos($skin, '<!-- END stats_row -->')+23) );
  4. ?>
które blokuje już do końca czasu...
Nie mam pojęcia czego to jest wina, używam Windowsa XP, serwera Apache 2.0.52, php 5.0.4 - wszystko na domowym kompie. 1,7 ghz, 256 RAM, do tej pory nie było żadnych kłopotów...
gloin
sprobuj moze cos takiego:

  1. <?php
  2.  
  3.  
  4. $skin = preg_replace('/<!-- BEGIN stats_row -->.*?<!-- END stats_row -->/s', '', $skin);
  5.  
  6.  
  7.  
  8.  
  9. ?>


niestety nie mam teraz jak tego przetestowac ale powinno zadzialac winksmiley.jpg

hehe sam jestem Ciekaw czy przyspieszy to Twoj skryp ...
daj znac jakie sa efekty smile.gif
L_Devil
W żaden sposób, nadal
Fatal error: Maximum execution time of 60 seconds exceeded

Szczerze wątpię czy to chodzi o polecenia, bo przecież i tak to moje to się powinno wykonywać góra 0.05 sekundy... Pytanie brzmi raczej - co w ustawieniach serwera/kompa/systemu może tak bardzo spowalniać php? Ewentualnie, jeżeli coś pominąłem, co w samym php może tak bardzo spowalniać jego prace?
Będę wdzięczny za wszelkie sugestie smile.gif

PS> Dopiero teraz się zorientowałem że to nie jest najlepszy dział do tego tematu... byłbym wdzięczny moderatorom za przeniesienie smile.gif
strife
Witam,

Ciekawe u mnie zwykle po 8-11 godzinach dzieją się dziwne rzeczy, ale najwyżej Apache'a mi wywala, a nie spowalnia. Może coś w procesach Windows'a XP blokuje Ci to np. dwa razy uruchomione mysql, miałem tak ostatnio i przez to miałem zawiechy, zobacz.

Pozdrawiam!
L_Devil
Zarżnąłem parę(naście) procesów tła i generalnie było lepiej..... ale główny problem leżał gdzie indziej:

  1. <?php
  2. $stats_row = substr(
  3. $skin,
  4. (strpos($skin,'<!-- BEGIN stats_row -->') + 24),
  5. strpos($skin, '<!-- END stats_row -->') 
  6. );
  7.  
  8. ?>
Miało wyciąć wszytko co jest pomiędzy tagami, do późniejszych operacji str_replace. Po wykomentowaniu tego i zastąpieniu czymkolwiek skrypt wykonał się w 0.0416 sekundy biggrin.gif

Drugie pytanie - jak to zastąpić? Jak skopiować wszystko między tymi dwoma komentarzami html do zmiennej?
gloin
po tych zmianach sprobuj wykorzystac to preg_replace'a, ktorego napisalem Ci wyzej, moze teraz zadziala to szybciej.
pozdrawiam
L_Devil
Tylko że, zdaje się, mówimy teraz o dwóch różnych linijkach smile.gif Ty mi napisałeś poprawkę do czegoś co, jak się okazało później, działało dobrze [mój błąd, przyznaję się bez picia], zaś spowalniające polecenie zawarłem w moim ostatnim poście. Wiesz może jak poprawić tą linijkę żeby działała szybciej? Jej celem jest skopiowanie wszystkiego pomiędzy dwoma komentarzami html do zmiennej biggrin.gif [skopiowanie, NIE usunięcie]
FiDO
Jak dlugi jest tekst w $skin ?

  1. <?php
  2.  
  3. preg_match('#<!-- BEGIN stats_row -->(.*)<!-- END stats_row -->#', $skin, $m);
  4. echo $m[1];
  5.  
  6. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.