Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zabrać się za cache...
Forum PHP.pl > Forum > PHP
Wujeksamodno
Witam. Szukam, szukam i znaleźć nie mogę. Mój problem jest następujący.
Mam skrypt do odpytywania serwera CS o statystyki etc. Jest on wykonywany z każdym odświeżeniem, a że na stronie ruch spory często zatykam cały serwer CS.
Pomyślałem że można by zastosować jakieś cache, np. jeśli niema pliku to normalnie ładuje, jeśli jest to idzie include xxx.php i wszystkie pierdoły się nie wykonują, a plik cache ma ważność np. 5 minutek.
Skrypt(wybaczcie komentarze ale na nim właśnie uczyłem się php...):
  1. <?php
  2. /*
  3. * Wujasowy skrypt na tworzenie strony ktora zaincludujemy przez JS
  4. * Zrobiony kiedys tam, z kims tam
  5. * Na chuj te wstepy...
  6. */
  7. //zaladujmy biblioteke gameq to sprawdzania statusu
  8. require_once 'g/GameQ.php';
  9. //wyrwijmy IP serwera z get'a i podzielmy, bo gameq tak sobie rzyczy
  10. /* dobra chuje juz kopiuja na swoje fora zrobimy inaczej
  11. * $ipp = $_GET['ip'];
  12. * $address = explode(':', $_GET['ip']);
  13. * $ip = $address[0];
  14. * $port = $address[1];
  15. * robimy tablice z danymi serwera
  16. * $server = array(array('cs', $ip, $port));
  17. */
  18. if(stristr($_GET['id'], 'ffa')){
  19. $server = array(array('cs', '193.33.177.14', '27051'));
  20. }
  21. elseif(stristr($_GET['id'], 'fun')){
  22. $server = array(array('cs', '193.42.218.63', '27015'));
  23. }
  24. /* Tutaj wszelkie zmienne ktorych nie musicie znac tongue.gif */
  25. * Jedziemy z koksem, czyli wypluwamy gotowy status ktory zaladujemy na stronie
  26. */
  27. echo '<style type="text/css" id="css">
  28. @import url("http://www.reksio-cs.pl/css.css");
  29. </style><div align=\"left\">';
  30. echo '<div style="background:#222222;background-image: url('.$sciezka.'' . $dane['gq_mapname'];
  31. echo '.jpg);background-position:center;background-repeat:no-repeat; width: 80px; height: 50px; float: right;">'.$online.'</div>';
  32. /*echo '' . $dane['gq_hostname'];*/
  33. echo '<span class="smalltext">Mapa:<em> ' . $dane['gq_mapname'];
  34. /*echo '</em><br />Nastepna mapa:<em> ' . $dane['amx_nextmap'];*/
  35. echo '</em><br />Timeleft:<em> ' . $dane['amx_timeleft'];
  36. echo '</em><br />Sloty:<span style="color:'.$color.'"><em> ' . $dane['gq_numplayers'];
  37. echo '</em></span>/<em>' . $dane['gq_maxplayers'];
  38. echo ''.$pelen.'</em></span>';
  39. echo '</div>';
  40. ?>


Gdyby ktoś mógł podsunąć jakiś pomysł jak to zastosować tu cache byłym wdzięczny.
muk4
Zapisujesz dane do pliku razem z timestampem i dane wyświetlasz z pliku. Jeżeli np minęło 5 minut to odświeżasz dane i timestamp.
Crozin
Zamiast bawić się z timestampami, łatwiej będzie skorzystać bezpośrednio z czasu ostatniej aktualizacji pliku (filemtime). I jak wyżej - jeżeli jest starszy niż 5 minut to odświeżasz dane.
Wujeksamodno
Dokładnie o to mi chodziło. Thx.

Znalazłem taki skrypt:
  1. <?php
  2. $cache_file = 'URI to cache file';
  3. $cache_life = '120'; //caching time, in seconds
  4.  
  5. if (!file_exists($cache_file) or (time() - filemtime($cache_file) >= $cache_life)){
  6. resource_consuming_function();
  7. file_put_contents($cache_file,ob_get_flush());
  8. }else{
  9. readfile($cache_file);
  10. }
  11. ?>

Jak teraz tutaj "domieszczać" ten mój? Niewiele z tego rozumiem...
@ed
ok poradziłem sobie
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.