Gå til innhold

Flere PC'er og flatfil-database = problemer?


Anbefalte innlegg

Har laget et registreringssystem i PHP som bruker en flatfil som database. MySQL o.l. er uaktuelt pga liten tid og foreløpig liten kunnskap om SQL.

Systemet kan legge til nye oppføringer, endre en tidligere oppføring, og merke en oppføring som "lukket". Har prøvd å legge inn feilmeldinger osv i forbindelse med dobbelregistrering osv. så man forhindrer kluss i databasen, men har likevel et spørsmål jeg lurer på:

 

Er det stor sannsynlighet for at filen ikke er skrivbar for en PC, dersom en annen holder på å lese fra den? Eller skjer dette bare i løpet av millisekunder?

 

Innlesing av filen skjer på følgende måte:

$register_array = array_values(file($fil));

Skriving til filen ved ny oppføring (bruker A i "fopen") og endring (bruker W i "fopen"):

if(is_writable($fil)){
 if (!$db = fopen("$fil", "a/w")){
 }
 if (fwrite($db,"$lagrestreng") === false){
 }
 fclose($db);
}
header("location: xxx");

 

Vil dette kunne by på problemer?

Lenke til kommentar
Videoannonse
Annonse

Ikke egentlig for å være vrang men: Har du ikke tid til å lære deg litt sql så TA DEG TID!

Lagre data i filer på den måten bør du se på som uaktuelt fordi det

- gir elendig ytelse

- blir umulig å håndtere større menger informasjon

- ting tar 10 ganger så lang tid (ja, da lønner det seg fort å ta tiden å lære sql!)

- uansett ikke tar lang tid før du allikevel begynner å bruke databaser og innser hvor dum du har vært.

 

http://no.php.net/manual/en/ref.mysql.php er et bra sted å begynne! For å administrere databasestrukturen er PhpMyAdmin et bra verktøy

 

Så til spørsmålet ditt: Nei det vil neppe by på noen problemer så lenge trafikken på siden er liten. Ta også en titt på flock() funksjonen.

Lenke til kommentar

Vet at det ikke er den beste løsningen ja, men skal lære meg SQL etter hvert (på nyåret). Det var derfor jeg skrev "foreløpig liten kunnskap". Grunnen til at jeg ikke har tid er at systemet skal tas i bruk ganske snart, og jeg har allerede laget det ferdig med flatfil-løsning.

 

Så litt på flock() nå, men er denne avhengig av sessions? Det er jo det samme scriptet som kanskje to personer kjører samtidig, og når den første personen har fått tilgang/rettighet til filen, vil ikke den andre personen gjennom scriptet da få beskjed om det samme?

 

Det vil være "stor" pågang på siden en liten periode, og det som jeg tror kan bli et problem er at en person leser/skriver til filen mens en annen skriver/leser samtidig.

For eksempel vil det jo være mulig at to oppføringer blir registrert samtidig (hvis de sitter ved siden av hverandre og trykker registrer samtidig, og dette er absolutt et reelt tilfelle). Hva skjer da med fopen(add)-funksjonen? Den leser jo ikke inn fila, men legger jo bare til en linje nederst.

 

Størrelsen på databasen vil være maks 250 linjer, med én linje på ca 13.000 tegn og de andre linjene på 600-1.500 tegn.

 

Når databasen er komplett, vil "lukke"-funksjonen innebære at filen leses inn som array, den riktige linjen erstattes med en ny linje, og databasen skrives deretter inn igjen. Er dette en treg affære, som fort vil føre til problemer m.t.p. at filen allerede er i bruk osv?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...