Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bardzo długi czas ładowania się wielkiego skryptu
Forum PHP.pl > Forum > Serwery WWW
golab
Witam,

Mam pewien skrypt (PHP), który sprawdza i na bieżąco modyfikuje bazę danych (SQL). Używam serwera Apache na domowym komputerze.

posiadam:
Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
mysqlnd 5.0.10

Przy czym mój skrypt wykonuje tysiące operacji i trwa niemożebnie długo.

Liczba operacji modyfikacji bazy danych w tym skrypcie to ponad 2000 do 5000 przy jednym uruchomieniu.
Czas od uruchomienia skryptu do jego zakończenia z pewnością przekracza 30 sekund, a może mierzony jest w minutach.

Nie jestem w stanie go zoptymalizować, zresztą nie ma to sensu (skrypt uruchamiam tylko parę razy dla całej bazy danych i dla zwykłych użytkowników nie jest dostępny)

Mogę uruchamiać jego części, np. 1/50 całości i wszystko działa jak należy.

Lecz gdy próbuję uruchomić całość - Apache jakby się zacinał.
Próbowałem z ob_start() i ob_flush(), lecz nie daje to żadnego rezultatu.

Gdy informacji do przetworzenia jest zbyt dużo - po prostu strona jakby się cały czas wgrywała - może to trwać nawet pół godziny (ustawiłem też set_time_limit(0) ) i nic się nie zmienia, strona nadal ma status wgrywającej się, Apache nadal ją mieli i nie można załadować żadnych innych stron (wiem, wiem - mam nie ustawioną wielowątkowość Apache w windows). Muszę resetować serwer.

Raczej nie występuje problem nieskończonego zapętlenia się gdzieś w kodzie, gdyż wykonując ten skrypt po kawałku, wszystko jest ok. Problemem jest odpalenie całości.

Nie jestem w temacie ustawień Apache (czy może jakiś ustawień w PHP?) zbyt dobrze obeznany, proszę zatem Was o pomoc smile.gif

Nie wiem nawet, co jeszcze mógłbym zmienić w ustawieniach.
Może ten temat był już na forum poruszany?


Proszę o wskazówki, stoję w miejscu, nie potrafię tego problemu przeskoczyć.
ctom
Cytat(golab @ 29.03.2014, 00:16:48 ) *
Liczba operacji modyfikacji bazy danych w tym skrypcie to ponad 2000 do 5000 przy jednym uruchomieniu.
Czas od uruchomienia skryptu do jego zakończenia z pewnością przekracza 30 sekund, a może mierzony jest w minutach.


wykonujesz te query pojedynczo czy przez transaction ?
golab
mam tam transaction wewnątrz transaction i tym podobne tongue.gif

Ale znalazłem, dlaczego tak się działo - w PHP wszystko było okej, ale w bazie danych używałem napisanej przez siebie procedury, która zapętlała się w nieskończoność w pewnym bardzo szczególnym przypadku, raz na tysiąc.
Teraz wszystko się ładuje normalnie.

Niemniej dzięki za pomoc!
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.