Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] cache
Forum PHP.pl > Forum > Przedszkole
Taifun
witam, mam przykładowy skrypt powiedzmy i jak najszybciej i najłatwiej zaimplementować cacheowanie aby nie pobieralo z kazdym razem wynikow?



Kod
<?php

$sql=polaczenie do bazy


include('tc_config.php');


function TC_Rejestruj($slowo,$odnosnik="")
{
  if ($odnosnik=='') $odnosnik=$_SERVER["REQUEST_URI"];

  $result=mysql_query("SELECT count(*) FROM tagcloud WHERE znacznik='$slowo'");
  $row=mysql_fetch_array($result);
  if ($row['count(*)']==0) $query="INSERT INTO tagcloud VALUES('$slowo',1,'$odnosnik',NULL)";
                      else $query="UPDATE tagcloud SET licznik=licznik+1 WHERE znacznik='$slowo'";
  $result=mysql_query($query);
}


function TC_Wyswietl($sort=true,$kol=true)
{
  global $style;
  
  if (isset($_GET['tc_sort']))
  {
    if ($_GET['tc_sort']==1) $sort=true; else {$sort=false;$kol=false;}
  }

  $result=mysql_query('SELECT sum(licznik) FROM tagcloud');
  $row = mysql_fetch_array($result);
  $maks=$row['sum(licznik)'];
  
  $query='SELECT * FROM tagcloud ORDER BY ';
  if ($sort && $kol) $query.='znacznik';
  if ($sort && !$kol) $query.='znacznik DESC';
  if (!$sort && $kol) $query.='licznik';
  if (!$sort && !$kol) $query.='licznik DESC';

  $result=mysql_query($query);
  while ($row = mysql_fetch_array($result))
  {
    $p=($row['licznik']/$maks)*100;
    $sv='';
    foreach($style as $sk=>$sv) if ($p>$sk) break;
    echo '<a href="'.$row['odnosnik'].'" style="'.$sv.'">'.$row['znacznik'].'</a> &nbsp;&nbsp;';
  }
  
}

?>
Crozin
Jak rozumiem chodzi o f-cje TC_Wyswietl().
  1. <?php
  2. function TC_Wyswietl($sort=true,$kol=true)
  3. {
  4. global $style;
  5.  
  6. if (isset($_GET['tc_sort']))
  7. {
  8. if ($_GET['tc_sort']==1) $sort=true; else {$sort=false;$kol=false;}
  9. }
  10.  
  11. $query='SELECT * FROM tagcloud ORDER BY ';
  12. if ($sort && $kol) $query.='znacznik';
  13. if ($sort && !$kol) $query.='znacznik DESC';
  14. if (!$sort && $kol) $query.='licznik';
  15. if (!$sort && !$kol) $query.='licznik DESC';
  16.  
  17.  
  18. $cacheFilename = './cache/' . md5($query) . '.cache';
  19. if(file_exists($cacheFilename)){ //katalog cache musi miec odpowiednie CHMOD
  20. echo file_get_contents($cacheFilename);
  21. return;
  22. }
  23.  
  24. $_result=mysql_query('SELECT sum(licznik) FROM tagcloud');
  25. $_row = mysql_fetch_array($_result);
  26. $maks=$_row['sum(licznik)'];
  27.  
  28. $return = '';
  29. $result=mysql_query($query);
  30. while ($row = mysql_fetch_array($result)) 
  31. {
  32. $p=($row['licznik']/$maks)*100;
  33. $sv='';
  34. foreach($style as $sk=>$sv) if ($p>$sk) break;
  35. $return .= '<a href="'.$row['odnosnik'].'" style="'.$sv.'">'.$row['znacznik'].'</a> &nbsp;&nbsp;';
  36. }
  37.  
  38. echo $return;
  39. file_put_contents($cacheFilename, $return); //jezeli nie masz tej f-cji (masz PHP4) zobacz w manualu na jej odpowiednik z uzyciem fopen()
  40. return;
  41. }
  42. ?>


A w TC_Rejestruj() dodaj jeszcze na końcu:
  1. <?php
  2. foreach(glob('./cache/*.cache') as $filename)
  3. unlink($filename);
  4. ?>
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.