Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] obsługa bazy opartej na plikach
Forum PHP.pl > Forum > Przedszkole
neverever
Wiadomo że najwygodniejszy i najwydajniejszy sposób przechowywania i przetwarzania danych to bazy danych jak np mysql.

Niestety muszę przerobić pewną strone tak by dane przechowywała w pliku/plikach.

Dlatego mam pytanie.
W jakiej formie lepiej trzymać taką plikową baze? xml, cvs, txt?
No i jeszcze, czy możecie polecić jakiś dobry skrypt/api do obsługi takiej plikowej bazy
-chodzi o odczyt, zapis, wyszukiwanie, wybieranie itp. dobrze by bała jak największa funkcjonalność zbliżona do mysql - na ile to możliwe.

Sam wcześniej nie miałem z czyms takim doczynienia, nie miałem takiej potrzeby.
Znalazłem w sieci tylko coś w stylu php-txt-db-api-0.3.1-Beta-01.zip - ale to tylko jakaś beta z 2005tego.
sniezny_wilk
Taka robota jest bez sensu, a ile wstawianie wartości do pliku jest proste, tak modyfikacje rekordu gdzieś w środku już nie, jeśli chciałbyś napisać własną bazę o zbliżonej funkcjonalności do MySQL to szczerze odradzam, szybciej chyba będzie napisać stronę od nowa z MySQL. Jeśli mogę zapytać: czemu nie możesz skorzystać z MySQL'a ?
Pilsener
Płacą za pliki to robisz na plikach, chcą na plikach to dajesz im pliki. Tu masz tutorial o tekstowych bazach danych:
forumweb.pl/viewtopic.php?t=39103

Pliki też mają swoje zalety, aczkolwiek do tworzenia relacyjnych baz danych nie bardzo się nadają - ale to akurat każdy wie i nie widzę potrzeby tego rozstrząsać. Życzę powodzenia w walce z plikami.
neverever
Cytat(Pilsener @ 7.05.2008, 14:32:56 ) *
Płacą za pliki to robisz na plikach, chcą na plikach to dajesz im pliki. Tu masz tutorial o tekstowych bazach danych:
forumweb.pl/viewtopic.php?t=39103

Pliki też mają swoje zalety, aczkolwiek do tworzenia relacyjnych baz danych nie bardzo się nadają - ale to akurat każdy wie i nie widzę potrzeby tego rozstrząsać. Życzę powodzenia w walce z plikami.

Dokładnie. Musi być na plikach, bo tak sobie facet umyśli i go za nic nie przegada. sciana.gif
Coś takiego jak w podanym tutorialu posiadam i kiedyś nawet wykorzystywałem ale... dry.gif
Co więcej, nie potrzebuję obsługi relacji, wystarczy nieco bardziej zaawansowana obsługa bazy płaskiej.

Pytam, bo może ktoś się już spotkał z jakimś gotowym, dobrym rozwiązaniem dla takiej bazy.
Nie musi to być koniecznie oparte o plik stricte tekstowy (txt,cvs,xml), może to być np. plik accesa mdb, mdbx albo jakiś inny.
Ważne by był do obsługi tego jakś dobry skrypt php.
sniezny_wilk
Ja zawsze wybijam takie pomysł z głowy zamawiającym.. ale jak chcesz baw się dobrze smile.gif powodzenie w przechowywaniu loginów i haseł, lub kilku tysięcznych danych i przetwarzaniu ich..
piotrooo89
Nie możesz mu powiedzieć ze to jest porostu nie zgodne ze standardami i nie praktykuje sie takich rzeczy. Zaciukasz się przy tych plikach.
Sabistik
Najprościej zastosować SQLite" title="Zobacz w manualu PHP" target="_manual.
bl4ck_b0x
proponuję skorzystać z tego (txtdb):

http://txtdb.strefaphp.net/

powodzenia winksmiley.jpg
cbagov
SQLite jest niezle, textdb wyglada niezle, nie znalem tego, obejrze sobie.
Mozesz tez napisac sam, zajmie ci kilka dni jesli jestes obcykany w php i wyrazeniach regularnych.
Dla serwerow bez SQL mam jednak wlasny system w samodzielnie parsowanym xml + obsluga szablonow.
Posiada oczywiscie dodawanie i usuwanie, kategorie, grupy i inne.
Mozna CVS, txt czy cokolwiek.
Kwestia czy chcesz tylko uzywac i liczy sie czas, czy oprzec o to cos wiekszego i bawic sie rozbudowa.
PiXel2.0
Dla ulatwienia dane mozna sobie trzymac w tablicach aby latwiej na nich operowac i przy odczycie i zapisie stosowac serialize() oraz unserialize() smile.gif

Napisalem taka prosta klase:
  1. <?php
  2.  
  3. class baza{
  4. private $file_name;
  5. private $data;
  6.  
  7. public function __construct($file_name){
  8. $this->file_name = $file_name;
  9. if(file_exists($this->file_name)){
  10. $content = file($this->file_name);
  11. $this->data = unserialize($content[2]);
  12. }else
  13. $this->data = array();
  14. }
  15. public function get_data(){
  16. return $this->data;
  17. }
  18. public function set_data($data){
  19. if(is_array($data)){
  20. $this->data = $data;
  21. return true;
  22. }
  23. return false;
  24. }
  25. public function write_data(){
  26. $data_string = serialize($this->data);
  27. $content = "<?php\n/*\n{$data_string}\n*/\n?>";
  28. $file = fopen($this->file_name, 'w');
  29. flock($file, LOCK_EX);
  30. fwrite($file, $content);
  31. flock($file, LOCK_UN);
  32. fclose($file);
  33. }
  34. }
  35.  
  36. ?>


Zaleta jest tez to, ze nikt z zewnatrz nie bedzie mogl odczytac danych wiec mozna bezpiecznie trzymac hasla.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.