Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Dodawanie wyników do MySQL z pewnym opóźnieniem - problem z czasem wyk. skryptu.
Forum PHP.pl > Forum > Przedszkole
Giluś
Cześć, na swojej stronie mam tak jak gdyby Czat w którym piszę wiadomości (relację Formuły 1 - taki własny manager), postanowiłem w ostatnim czasie zrobić system powtórki (replay), cały system działa znakomicie gdy jest kilka wiadomości i są w niedużym odstępie, ale gdy np.: Relacja trwa ponad 30 minut to skrypt przerywa po 30s (taki limit na wykonywanie skryptu) - próbowałem wstawić set_time_limit(3600); ale i tak to nic nie pomagało..

Nie jest to zwykły skrypt który odczytuję zapisane wiadomości i je wyświetla, ale on wyświetla te wiadomości z takim (lub prawie) samym odstępie w jakim zostały wysłane wiec np.: jeśli między 1 a 2 wiadomością było 10s to jest uruchamiana funkcja sleep(10); gdyby te wiadomości był od razu dodawane to problemu by takiego nie było bo w czasie 30 minut jest średnio 50-100 wiadomości.

W jaki sposób mogę powtórzyć taką relację gdy nie działa set_time_limit i nie mam dostępu do php.ini ?..

Myślałem nad takim sposobem, aby to zrobić w Ajax i co ~25s (jeśli 30s trwa sesja to te 5s takiego zapasu będzie) tak jak gdyby odświeżać stronę i kolejne wiadomości wysyłać, ale nie wiem jak coś takiego wykonać..

Przedstawiam Państwu kod jaki dotychczas zrobiłem..
  1.  
  2. <?php
  3. date_default_timezone_set('Europe/Warsaw');
  4. require_once('function.php');
  5.  
  6.  
  7. $id_rec = $_GET['id'];
  8.  
  9. $dzien = date('d'); $dzientygodnia = date('l'); $miesiac = date('n'); $rok = date('Y');
  10.  
  11. $miesiac_PL = array(1 => 'stycznia', 2 => 'lutego', 3 => 'marca',
  12. 4 => 'kwietnia', 5 => 'maja', 6 => 'czerwca', 7 => 'lipca',
  13. 8 => 'sierpnia', 9 => 'września', 10=> 'października',
  14. 11 => 'listopada', 12 => 'grudnia');
  15.  
  16. $dzientygodnia_PL = array('Monday' => 'Poniedziałek',
  17. 'Tuesday' => 'Wtorek', 'Wednesday' => 'Środa',
  18. 'Thursday' => 'Czwartek', 'Friday' => 'Piątek',
  19. 'Saturday' => 'Sobota', 'Sunday' => 'Niedziela');
  20.  
  21. $data1 = date("H:i");
  22.  
  23. $user = '<i>System</i>';
  24.  
  25. $wiadomosc1 = '<b><i>Replay Start:</i>, Data: '.$data1.' '.$dzientygodnia_PL[$dzientygodnia].', '.$dzien.' '.$miesiac_PL[$miesiac].' '.$rok.'</b>, <small>Nr. '.$id_rec.'</small>';
  26. mysql_query("INSERT INTO czat SET message='$wiadomosc1', time='$data1', user='$user', ranga='4'");
  27.  
  28.  
  29. $mysql = mysql_query("SELECT * FROM czat_rec WHERE id_rec='$id_rec' ORDER BY `czat_rec`.`date_rec` ASC");
  30. while($r = mysql_fetch_assoc($mysql))
  31. {
  32. if (isset($previous)) {$czas_r = $r['date_rec'] - $previous;} else {$czas_r = 0;}
  33. sleep($czas_r);
  34.  
  35. $timem = $r['time'];
  36. $userm = $r['user'];
  37. $messagem = $r['message'];
  38. $rangam = $r['ranga'];
  39.  
  40. mysql_query("INSERT INTO czat SET
  41. time = '$timem',
  42. user = '$userm',
  43. message = '$messagem',
  44. ranga = '$rangam'
  45. ");
  46.  
  47. $previous = $r['date_rec'];
  48.  
  49.  
  50. }
  51.  
  52. ?>



Pozdrawiam i bardzo dziękuje za pomoc w moim problemie wink.gif
CuteOne
Nie lepiej wyświetlanie danych przekazać do JS? Tzn. pobrać całą relację z bazy i przekazać ją jako obiekt JSON do JavaScript a on już zajmie się obróbką i wyświetlaniem danych.
Giluś
No dobrze, ale jak to później przetworzyć, aby dany wynik był w danym odstępie ?.
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.