Pai nu poti sa salvezi un array asa cum e intr-un fisier, se converteste in tip sir (string), indicat in format json, apoi se salveaza ca sir pe server.
Sistemul de retinere date in fisiere cache e util cand reduci numarul de apelari si executii de functii pe server. Ce rost are sa salvezi tot rezultatul dintr-un Select in fisier text si apoi sa-l iei de acolo si sa-l transformi iar in array, cand poti mai simplu sa apelezi o functie care face iar acel Select.
Pe acest site folosesc sistem de cache la pagini (cu date in format json) nu pentru a salva un intreg Select si atat; ci in acel cache salvez datele paginii rezultate din mai multe Select-uri si prelucrari ale datelor returnate, ca sa nu se mai faca acele Multe operatiuni la fiecare accesare a paginii.
De exemplu, fisierul cache pt. o pagina de site ('nume_pagina.json") arata asa:
Cod: Selectaţi tot
{
"title": "Titlu pagina...",
"desc": "Descrier pagina ...",
"menu_top": "Cod html Meniu in header",
"menu_side": "Cod html Meniu lateral",
"cnt": "Cod html cu continutul din Body",
"footer": "Cod html cu meniu si alte date fixe din Footer"
}
Se reduc astfel o multime de operatiuni la accesarea paginii lund datele din cache deja definite pt. pagina. Daca ar fi vorba de unul sau doua Select-uri fara alte prelucrari, asi lasa asa, fara sa complic codul.
- Revenind la eroarea "Array to string conversion", dupa ce datele Selectate sunt prelucrate si definite intr-un array, acel array il salvez ca sir json in cache, iar la citire il transform si folosesc iar ca array. Cam asa:
Cod: Selectaţi tot
$file_cache ='cache/page_name.json'; //path and name of file with cached data
//if $file_cache not exists, or it is older than 1 hour, gets data from mysql
//else, from cache
if(!file_exists($file_cache) || (time() - filemtime($file_cache)) >3600){
// Selects and other Data processing..
$re_data =['title'=>'Titlu..', 'desc'=>'Descriere..', 'etc'=>'etc..']; //array with page data
file_put_contents($file_cache, json_encode($re_data)); //store page data in $file_cache in json format
}
else $re_data = json_decode(file_get_contents($file_cache), true); //gets array with page data from cache
//the rest of code that adds data from $re_data in Template and builds the page
- Sistemul de cache e o idee buna de aplicat cand se simplifica mai multe operatiuni la accesari repetate, nu cand Doar complica codul.