Napriek silnému využívaniu databáz dynamickými stránkami sa pre menšie zoznamy dát dá použiť aj obyčajný textový súbor s oddeľovačmi.
Súbory sú používané aj pri rôznych technikách cacheovania, keď sa vygeneruje statický súbor raz a číta sa opakovane bez generovania až do uplynutia nastaveného času.
Počítadlo návštev
Jednoduché počítadlo počtu návštev je dobrý príklad pre použitie súboru.
Súboru pridelíme premennú príkazom fopen, ktorým určíme aký súbor otvoriť, či na čítanie (r), zápis.(w), pripisovanie (a), alebo čítanie aj zápis (r+).
$filename = 'pocitadlo.log';
$fp = fopen( $filename,"r");
$counter = fread($fp, filesize($filename) ); // read in value
fclose( $fp );
++$counter; // increase the counter by one
$fp = fopen( $filename,"w");
fwrite( $fp, $counter);
fclose( $fp );
print 'POČET ZOBRAZENÍ: '.$counter;
Pri počítadle najskôr načítame predchádzajúci počet návštev do premennej (funkcia fread / fgets). Funkcia fread číta pevne stanovený "binárny" buffer, fgets číta "textový" riadok, v tomto prípade sú použiteľné obe.
Číslo v načítanej premennej zvýšime o jednu a otvoríme súbor pre zápis (w - chceme existujúci prepísať) a prepíšeme príkazom fwrite pôvodnú hodnotu zvýšenou.
Na záver ešte vypíšeme počet návštev na stránke.
Práca s dátami v súbore
Súbor možno použiť pre uloženie dát napríklad v známom tvare s oddeľovačmi medzi poliami (bodkočiarka) a oddeľovačom riadkov (enter) ako oddelenie poľa. Excel umožňuje export do takéhoto súboru s koncovkou CSV (comma separated values).
Príklad z načítania otázok a správnych odpovedí na vodičský preukaz z pevne definovaného CSV súboru:
$data = "";
while(!feof($fz)) { $data .= fgets($fz, 1024); }
fclose($fz);
$values = explode(";", $data); unset($data);
Otvoríme csv súbor na čítanie, načítame v cykle s buffrom 1KB do premennej $data. Ako kontrola konca súboru je použitá funkcia feof(). Po načítaní súbor zavrieme.
Premennú data rozdelíme do poľa funkciou explode. Táto funkcia naplní premennú $values, prvým prvkom bude $values[0], následne $values[1] atď.
Ide o jednorozmerné pole, preto je cyklenie v ňom potrebné robiť násobkami počtu stĺpcov súboru.
for ($x = 0; $x <= 944; $x++) {
$p = $x * 10;
$cislo = $values [ $p];
$otazka = $values [ $p +1];
$tst = $values [ $p +9];
Záver
Pre malé projekty s malým počtom dát a nízkou návštevnosťou je ukladanie do súborov zjednodušením práce. Na hostingu nieje potrebné konfigurovať databázu a pripojenie do nej.
V prípade cacheovania statických stránok má zmysel pri veľkých projektoch.
Pri použití väčšieho množstva dát, zložitých operácií nad nimi, alebo veľkého počtu prístupov však súbor spomaľuje odozvu stránky oproti práci s DB.
Žiadne komentáre:
Zverejnenie komentára