Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] cache
Taifun
post 21.05.2008, 11:59:59
Post #1





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

Ostrzeżenie: (10%)
X----


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;';
  }
  
}

?>


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Crozin
post 21.05.2008, 15:08:51
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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. ?>
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: 19.07.2025 - 17:29