Lucrul cu baze de date constând din fișiere text

sarcină
Este necesar să găsiți o modalitate ușoară de a stoca informații între cereri.

Soluția
Utilizați un fișier text cu blocare opțională pentru a preveni conflictele. Este posibil pentru a stoca date în orice format adecvat (CSV, separatorul - .. O bară verticală etc.) Una dintre stocare moduri convenabilă este plasarea lor într-o singură variabilă (mare tablou asociativ), urmată de conservare prin aplicarea funcției serializare variabilă ():

$ date_file = '/ tmp / date';
// deschideți fișierul pentru citire și scriere
$ fh = fopen ($ data_file, 'a +') sau mor ($ php_errormsg);
derulați ($ fh) sau mori ($ php_errormsg);
// setați fișierul de blocare exclusiv
flock ($ fh, LOCK_EX) sau mor ($ php_errormsg);
// citiți și executați conversia datelor inverse
// dintr-o formă secvențială
$ serialized_data = freadă ($ fh, fișier ($ data_file)) sau mor ($ php_errormsg);
$ date = neserializare ($ serialized_data);
/ *
* efectuăm acțiunile necesare cu datele
* /
// re-serializați datele
$ serialized_data = serialize ($ date);
// ștergeți fișierul
derulați ($ fh) sau mori ($ php_errormsg);
ftruncate ($ fp, 0) sau mor ($ php_errormsg);
// scrieți datele înapoi în fișier și scoateți blocarea
dacă (-1 == (fwrite ($ fh, $ serialized_data)))
fflush ($ fh) sau mori ($ php_errormsg);
flock ($ fh, LOCK_UN) sau mor ($ php_errormsg);
fclose ($ fh) sau mori ($ php_errormsg);

discuție
Stocarea datelor într-un fișier text nu necesită instalarea unui software suplimentar de baze de date, dar acesta este practic singurul avantaj al acestei metode.


Principalele sale dezavantaje sunt lenea și ineficiența. Mai întâi trebuie să blocați fișierul, apoi extrageți din el toate datele dintr-un rând, chiar dacă
doar o mică parte este necesară. Până când sistemul de blocare este eliminat, toate celelalte procese și, în consecință, toți ceilalți utilizatori vor trebui să aștepte și să se rătăcească. Una dintre proprietățile valoroase ale bazei de date este că oferă acces structurat la informații, ceea ce face posibilă blocarea (și încărcarea
în memorie) numai acele date care sunt într-adevăr necesare. O soluție bazată pe fișiere text nu permite acest lucru.

Ceea ce este mai rău este faptul că de blocare, care poate fi aplicat în fișiere text, nu sunt aproape la fel de stabile ca încuietoarea baza de date. turmă () pentru a bloca un fișier numit opțional, astfel încât singurul lucru care poate preveni mai multe procese care trece reciproc și dezordine datele, este maniere bune și corecte despre programare. Dar nu există nici o protecție împotriva programelor rău intenționate sau bune, dar slab elaborate.

Articole similare