Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]pętla, a timeout serwera (hostingu)
Duo
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 16.11.2010

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


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


Ten post edytował Duo 24.07.2012, 13:48:21
Go to the top of the page
+Quote Post
strife
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


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.


--------------------
Go to the top of the page
+Quote Post
Duo
post
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 16.11.2010

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


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.
Go to the top of the page
+Quote Post
Rysh
post
Post #4





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Pokaż kod, bo to co piszesz jakoś dziwnie brzmi.


--------------------
Go to the top of the page
+Quote Post
Duo
post
Post #5





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 16.11.2010

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


  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.
Go to the top of the page
+Quote Post
Rysh
post
Post #6





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


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.


--------------------
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #7





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


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.

Ten post edytował wNogachSpisz 25.07.2012, 10:28:11
Go to the top of the page
+Quote Post
toffiak
post
Post #8





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


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.



--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:38