Szövegfájlokból álló adatbázisok kezelése

feladat
Meg kell találni egy egyszerű módszert az információk közötti információ tárolására.

A megoldás
Az ütközés elkerülése érdekében használjon opcionális zárral rendelkező szövegfájlt. Az adatokat bármilyen formátumban tárolhatja (CSV, elválasztóval - függőleges sáv stb.) Az adatok tárolásának egyik kényelmes módja, hogy egy változóba (nagy asszociatív tömbbe) helyezze őket, majd mentse el azt a sorozati függvény használatával erre a változóra ():

$ data_file = '/ tmp / data';
// nyissa meg a fájlt az olvasáshoz és az íráshoz
$ fh = fopen ($ data_file, 'a +') vagy die ($ php_errormsg);
visszacsévélés ($ fh) vagy die ($ php_errormsg);
// állítsa be az exkluzív zárolási fájlt
állomány ($ fh, LOCK_EX) vagy die ($ php_errormsg);
// olvassa el és hajtsa végre a fordított adatátalakítást
// egy szekvenciális formából
$ serialized_data = fread ($ fh, fájlméret ($ data_file)) vagy die ($ php_errormsg);
$ data = unserialize ($ serialized_data);
/ *
* elvégezzük a szükséges intézkedéseket az adatokkal
* /
// újra szerializálni az adatokat
$ serialized_data = serialize ($ data);
// törölje a fájlt
visszacsévélés ($ fh) vagy die ($ php_errormsg);
ftruncate ($ fp, 0) vagy die ($ php_errormsg);
// írja vissza az adatokat a fájlba, és távolítsa el a zárat
ha (-1 == (fwrite ($ fh, $ serialized_data)))
fflush ($ fh) vagy die ($ php_errormsg);
állomány ($ fh, LOCK_UN) vagy die ($ php_errormsg);
fclose ($ fh) vagy die ($ php_errormsg);

megbeszélés
Az adatok tárolása egy szövegfájlba nem igényel további adatbázis- szoftver telepítését, de ez gyakorlatilag az egyetlen előnye ennek a módszernek.


Főbb hátrányai a lassúság és a hatékonyság. Először be kell zárnia a fájlt, majd ki kell vonnia az összes adatot egy sorban, még akkor is, ha
csak egy kis rész szükséges. Amíg a zárat eltávolítják, az összes többi folyamatnak, és ennek következtében minden más felhasználónak meg kell várnia, és körülveszi. Az adatbázis egyik értékes tulajdonsága, hogy strukturált hozzáférést biztosít az információkhoz, lehetővé téve a blokkolást (és a feltöltést is)
a memóriában) csak azokat az adatokat, amelyek valóban szükségesek. A szöveges fájlokra épülő megoldás nem teszi lehetővé ezt.

Ráadásul a szövegfájlokra alkalmazható zár nem olyan stabil, mint az adatbázisban található zár. Az állomány () függvény blokkolja a fájlokat, úgynevezett opcionális, így az egyetlen dolog, amely megakadályozza, hogy több folyamat áthaladjon egymással és megsérti az adatait, jó modor és pontos programozás. De nincs védelem a rosszindulatú vagy jó, de rosszul írott programok ellen.

Kapcsolódó cikkek