Pagina 1 din 1

reimprospatare rezultate aleatoriu la un anumit interval de timp - mysql

Scris: Sâm Oct 15, 2016
de sagap
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.

reimprospatare rezultate aleatoriu la un anumit interval de timp - mysql

Scris: Dum Oct 16, 2016
de MarPlo
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;