Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]pętla, a timeout serwera (hostingu)
Forum PHP.pl > Forum > Przedszkole
Duo
Witam,
Mam pętlę for, która musi załadować 50 razy zincludowany plik. Czasem te ładowanie bywa dłuższe od ustawienia timeoutu na hostingu www (2 min). Jak mogę zaradzić temu ? Chciałbym np tak, że na nowo pliczek z pętlą się ładował po 25 includach czy coś takiego. Macie jakiś pomysł jak to zrobić ?

@edit
poprawione przepraszam
strife
Cytat(Bateria @ 24.07.2012, 14:25:42 ) *
Piszę się PĘTLA

Raportuje się takie rzeczy.

@Duo - po co includujesz w pętli ten sam plik 50 razy? Podaj fragment kodu bo coś mi się wydaje, że problem jest gdzie indziej niż tylko w odpowiednim podziale pętle na porcje.
Duo
Problem jest w tym, że pętla ładuje się dłużej niż 2 minuty. Nie wiem jak to podzielić, aby ładowały się oddzielnie. Includuję 50 razy plik z różnymi dwoma zmiennymi i z tym raczej nie ma żadnych innych problemów.
Rysh
Pokaż kod, bo to co piszesz jakoś dziwnie brzmi.
Duo
  1. <?
  2. for($i=1;$i<=$_POST['ilosc']; $i++){
  3.  
  4. $polaczenie = @mysql_connect('localhost', 'root', '')
  5. or die('Brak połączenia z serwerem mysql. Błąd: '.mysql_error());
  6.  
  7. $db = @mysql_select_db('baza', $polaczenie)
  8. or die('Nie mogę połączyć się z bazą danych. Błąd: '.mysql_error());
  9.  
  10. $row= mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$i'"));
  11.  
  12. $temat = $row['temat'];
  13. $link = $row['l'];
  14.  
  15. include ('cms.php');
  16.  
  17. }
  18. ?>


Mam zwykłą pętlę, która przy 50 includowanych plikach wykonuje się ponad 2 minuty, gdzie hosting posiada blokadę ładowania pliku do 2 minut. Chcę to jakoś rozdzielić, żeby plik ładował się po 25 includach od nowa, żeby dokończył kolejne 25 includowanych plików.
Rysh
Robisz to źle, co masz w tym cms.php?

Zapewne coś co ma wykonać przy każdej pętli, ja bym na Twoim miejscu wsadził w funkcję i ją wykonywał za każdym razem. Najlepiej pokaż ten plik, bo może to on po prostu zamula.
wNogachSpisz
Najlepiej gydby skrypt nie wykonywał się tak długo, bez znaczenia co ma do zrobienia.
15-20 sekund to max.
Powinieneś wykonać skrypt w taki sposób, aby mógł zatrzymać i podjąć pracę w dowolnym momencie. Można to łatwo zrobić na zasadzie przechowywania w bazie danchh zserializowanych obiektów, gdzie w atrybutach obiektu trzymasz wszystkie potrzebne liczniki iteracji, a funkcje __sleep i __wakeup zamykają i odnawiają niezbedne uchwyty i połączenia.
toffiak
Ponawiam pytanie zawarte w wyżej dodanym poście: Jaki jest powód 50-krotnego łączenia z bazą 50-krotnego wykonywania tego samego zapytania i ładowania tego samego pliku ?

O ukrywaniu błędów nie wspominając.

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.