Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Cachowanie danych.
Gruchol
post 25.07.2016, 01:40:18
Post #1





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Witam,
Po dłuższym czasie postanowiłem wrócić do przygody z php. Jako swój pierwszy projekt postanowiłem zakodować stronę pewnej gry.
Aktualnie robię ranking, jednak przeszukiwanie całej bazy w której są dane kilkudziesięciu tysięcy użytkowników za bardzo obciąży serwer.
Potrzebuje wyświetlić i cachować takie dane jak czas gry, poziom gracza jakieś tam osiągnięcia itd. Chciałbym aby te dane aktualizowały się np. co 10 minut.
Na internecie znalazłem klasę nospora, jednak nie wiem jeszcze jak za bardzo się jej używa.
Prosiłbym Was o jakieś wskazówki i poradniki (mogą być anglojęzyczne) jakiej klasy użyć ew. jak to rozwiązać.
Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Gruchol
post 26.07.2016, 16:03:42
Post #2





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Próbowałem napisać swoją funkcję ale to chyba nie ma sensu.
Wyszło mi coś takiego (nie działa warunek z time())

  1. global $db;
  2.  
  3. $file_name = "cache.txt";
  4. if(filemtime($file_name) > time() + 1*60)
  5. {
  6. $query_to_cache = $db->query("SELECT player.player.id, player.player.name, player.player.level, player.player.playtime, player.player.last_play, player.guild.name AS 'guild_name' FROM player.player, player.guild, player.guild_member WHERE player.player.id = player.guild_member.pid AND player.guild.id = player.guild_member.guild_id ORDER BY level DESC LIMIT 5");
  7. $query_to_cache->execute();
  8. $query_to_cache = $query_to_cache->fetch(PDO::FETCH_ASSOC);
  9.  
  10. $fp = fopen($file_name, 'w');
  11. fwrite($fp, print_r($query_to_cache, TRUE));
  12. fclose($fp);
  13. }


Jednak to nie ma sensu ;/
Bardzo bym prosił o pokazanie na przykładzie tego:

  1. function DisplayRanking()
  2. {
  3. global $db;
  4.  
  5. $info = $db->query("SELECT player.player.id, player.player.name, player.player.level, player.player.playtime, player.player.last_play, player.guild.name AS 'guild_name' FROM player.player, player.guild, player.guild_member WHERE player.player.id = player.guild_member.pid AND player.guild.id = player.guild_member.guild_id ORDER BY level DESC LIMIT 5");
  6. $info->execute();
  7.  
  8. echo "<table style='border: 1px solid;'>";
  9.  
  10. while($row = $info->fetch(PDO::FETCH_ASSOC))
  11. {
  12. if(!empty($row['guild_name']))
  13. {
  14. $guild_name = $row['guild_name'];
  15. }
  16. else
  17. {
  18. $guild_name = "(Brak)";
  19. }
  20.  
  21. echo "<tr>";
  22. echo "<td>".$row['name']."</td>";
  23. echo "<td>".$row['level']."</td>";
  24. echo "<td>".$guild_name."</td>";
  25. echo "<td>".$row['playtime']."</td>";
  26. echo "<td>".$row['last_play']."</td>";
  27. echo "</tr>";
  28. }
  29.  
  30. echo "</table>";
  31.  


jak cachować to zapytanie i później wyświetlać to w tabeli.
Niestety ciężko mi cokolwiek zrozumieć do czasu aż nie zobaczę czegoś na "żywym" przykładzie.
Oczywiście to nie jest jedyna funkcja którą będę musiał cachować, chcę na jej przykładzie zobaczyć tylko jak to działa.

Ogarnąłem już to cachowanie, bo znalazłem bardzo prostą bibliotekę.
Funkcja zwraca mi aktualnie tablice w tym stylu $dane[1][id];
I jak z takiej tablicy wyszukać dane po np. nazwie a nie po numerze tablicy?
Chodzi mi o coś w stylu $dane["Zenek"]["id"], czyli wyciągam id gracza Zenek.


Ten post edytował Gruchol 25.07.2016, 18:52:31
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 19:12