Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przekroczony maksymalny czas wykonywania skryptu
lichu10
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 3.06.2004
Skąd: Włocławek

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


Przy wykonywaniu skryptu instalacji galerii (wykonuje ona miniaturki obrazków oraz zapisuje informacje do bazy danych) otrzymałem następujący komunikat o błędzie:

  1. <?php
  2. Fatal error: Maximum execution time of 10 seconds exceeded in /srv/www/htdocs/web1301/html/cms/gal_miniaturka.php on line 24
  3. ?>


Skrypt ten zdołał wykonać 38 miniaturek (a powinien w tym przypadku ok. 180)

Kod pliku ze względu na wydajność zawiera następujące elementy:
- zainclude'owany plik zawierający funkcję tworzącą miniaturki
- pętlę przeszukującą dany folder ze zdjęciami i wykonującymi w/w funkcję oraz dodającą dane o kazdym obrazku do bazy danych


Problem jest oczywisty. Chciałbym rozwiązać go poprzez modyfikację instalatora galerii aby działał w następujący sposób:
Każdorazowe utworzenie miniaturki przerzuciłbym na osobny plik - czy serwer da się nabrać na to że zamiast jednorazowego wykonania wszystkich miniaturek wykonam pod rząd wiele wywołań tego samego skryptu?

Jak to zrobić?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Spróbuj też wrzucić do folderu w którym masz skrypt plik .htaccess o treści:
Kod
php_value max_execution_time 120



Jeśli to nic nie da, to przerób skrypt tak:
1. Zapisuje aktualny czas do zmiennej $start (microtime" title="Zobacz w manualu PHP" target="_manual)
2. Przeszukuje folder, ładuje wszystkie zdjęcia do tablicy $pliki i sortuje ją alfabetycznie
3. Sprawdza czy istnieje zmienna $_GET['first'], jeśli tak, to przechodzi od razu do tego klucza tablicy (np. jeśli $_GET['first'] = 15 to pętlę zaczynasz od $i=15, nie $i=0)
4. Tworzysz pętlę for, która w każdym przejściu będzie robiła miniaturkę dla każdego zdjęcia, zapisuje dane do bazy i sprawdzała, czy minęło już 9 sekund (microtime() - $start)
5. Jeśli minęło już 9 sekund, to wysyłasz do przeglądarki nagłówek:
Kod
header( 'Location: http://strina.pl/plik.php?first=' . $i + 1 );

i kończysz wykonywanie skryptu.

Ten post edytował Kicok 15.07.2007, 07:36:17
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: 21.12.2025 - 02:27