reimprospatare rezultate aleatoriu la un anumit interval de timp - mysql

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sagap
Mesaje:12

reimprospatare rezultate aleatoriu la un anumit interval de timp - mysql

Buna seara,

As dori sa stiu cum se poate reimprospata la un anumit timp (exemplu 1 ora) pagina cu rezultate aduse aleatoriu din mysql.
Folosesc urmatorul cod :

Cod: Selectaţi tot

$sql = "SELECT * FROM `nume` ORDER BY RAND() LIMIT $offset, $rowsperpage";  
In acest moment se afiseza rezultatele aleatorii de fiecare data cand apas butonul de refresh chiar daca au trecut doar 10 secunde.

Multumesc.

MarPlo Mesaje:4343
Salut
Poate sunt mai multe solutii /variante. Personal, din ce stiu iti pot da ca idee aceasta metoda:
1. Codul html cu rezultatele din acel Select sa fie salvat intr-un fisier pe server, intr-un director cu permisiuni de scriere (CHMOD 0755, SAU 0777).
2. Inainte de Select se verfifica acel fisier.
3. Daca diferenta dintre timpul curent si cel in care a fost salvat fisierul e mai mica de 1 ora, se adauga in pagina datele din fisier.
4. Altfel, se face Select, se defineste codul html cu rezultatele, se rescrie in fisier si se adauga in pagina.
- Cam asa:

Cod: Selectaţi tot

<?php
$fpath ='dir/rand_'. $offset .'-'. $rowsperpage .'.htm';

if(file_exists($fpath) && (time() - filemtime($fpath)) <3600) $pdata = file_get_contents($fpath);
else {
  $sql = "SELECT * FROM nume ORDER BY RAND() LIMIT $offset, $rowsperpage";

  //parse results and define in $pdata the html code that will be added in page
  $pdata ='html with select results';

  //save $pdata in file
  if(!file_put_contents($fpath, $pdata)) echo 'Unable to save data in: '. $fpath;
}

echo $pdata;