@Butcher - ai dreptate...nu am fost foarte atent la aspectul asta.
Scuzele mele.
@Butcher - ai dreptate...nu am fost foarte atent la aspectul asta.
Scuzele mele.
se intampla
Legat de caching. Abordarea mea
Clasa mea de BD are implementat caching cu fisiere.
Adica:
3600 = timpul in secunde cat este valabil cache-ul.Cod PHP:$arr_result=$db->sql("SELECT * FROM tabel", 3600);
Creez un fisier ce are ca nume md5($sql) si in el stochez array-ul rezultat din baza de date serializat.
Daca se mai executa acelasi sql, inseamna ca am un fisier cu numele md5($sql). Aflu data crearii fisierului (este functie php). Daca timpul curent - data fisierului < 3600 => cache hit si citesc array-ul serializat din fisier + unserialize;
Daca nu e cache hit execut sql-ul si stochez rezultatul in fisier.
In felul asta am un sistem de caching customizabil pt fiecare caz particular in parte fara cronjobs/etc.
Ultima modificare făcută de Butcher; 8th June 2010 la 21:48.
de acord cu cachingul cu serializare, dar in cazul asta concret s-ar putea sa dureze mai mult lucrul cu fisiere decat queryul intr'o tabela tip cache in db;
in plus, eu prefer sa "expir" cacheul in momentul in care fac o modificare in db (care afecteaza bucata respectiva) in loc sa calculez dupa timpul trecut de la generare;
sunt si situatii in care prefer sa am o intarziere in "propagarea" datelor de la adaugare pana la afisare (cache bazat pe timp de valabilitate), situatii legate de obicei de homepage, dar ca numar de situatii prima varianta se potriveste in mai multe locuri (conform preferintelor / experientei mele);
problema apare din faptul ca nu se poate limita group by.
O rezolvare (lenta) este folosind variabile in sql (variabile de mysql).
Daca intereseaza pe cineva o sa incerc sa postez maine o explicatie, acum sunt pe telefon si e mai greu.
Dever's Blog - Atentie! dau cu parerea.
Momentan este/sunt 1 utilizator(i) care navighează în acest subiect. (0 membrii și 1 vizitatori)