Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekroczenie czasu
Forum PHP.pl > Forum > PHP
Diablos
Tworzac i ulepszajac swoj skrypt pokazywania ilosc i osob online napisalem funkcję, ktorej zadaniem jest usuwanie z bazy danych wpisów gdzie time zapisany byl powyzej 3 minut.


Wyglada ona tak:

  1. <?php
  2. function doldsessions()
  3. {
  4. global $tbsessions;
  5.  
  6. $quO = mysql_query('SELECT * FROM ' . $tbsessions . ' ');
  7.  
  8. while ( $uO == mysql_fetch_array($quO) )
  9.  {
  10.  
  11. $time = time() - $uO['time'];
  12. $time = $time/60;
  13.  
  14. if ( $time >= 3 )
  15. {
  16.  
  17. $dOs = mysql_query('DELETE * FROM ' . $tbsessions . ' WHERE ID = ' . $uO['ID'] . ' ');
  18. }
  19. }
  20.  
  21. } 
  22. ?>


Nastepnie wywołuje ja:

  1. <?php
  2. doldsessions();
  3. ?>


Uruchamiam, po stosunkowo dlugim czasie wyswietla mi sie:
Cytat
Fatal error: Maximum execution time of 60 seconds exceeded in C:\Program Files\xampp\htdocs\logowanie\proba.php on line 20


No widze, ze przekroczenie czasu itp. tylko ze nie jestem obeznany w tego typu problemach i nie wiem co tu poprawic.
crash
O rany! Dawno nie widziałem tak niewydajnego sposobu kasowania danych z bazy...

  1. DELETE *
  2. FROM tabela WHERE ( ( now() - time ) / 60 ) >= 3
Diablos
Troszeczke sie zapedzilem, funkcja wyglada obecnie tak:

  1. <?php
  2. function doldsessions($time)
  3. {
  4. global $tbsessions;
  5.  
  6. $dOs = mysql_query('DELETE * FROM ' . $tbsessions . ' WHERE ( ( NOW() - time ) / 60 ) >= ' . $time . ' ');
  7. if ( !$dOs ) { echo 'kaput'; }
  8.  
  9.  
  10. } 
  11. ?>


Wyswietla sie kaput ;p
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.