Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Dodawanie wyników do MySQL z pewnym opóźnieniem - problem z czasem wyk. skryptu.
Giluś
post 13.10.2012, 14:00:48
Post #1





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


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

Ten post edytował Giluś 13.10.2012, 14:01:06
Go to the top of the page
+Quote Post
CuteOne
post 13.10.2012, 16:37:22
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


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.
Go to the top of the page
+Quote Post
Giluś
post 13.10.2012, 17:16:28
Post #3





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


No dobrze, ale jak to później przetworzyć, aby dany wynik był w danym odstępie ?.
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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 05:08