Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: File-olio PHP:ssä

Jokotai [05.11.2010 22:18:05]

#

Itselleni on jäänyt epäselväksi, että jos käyttäjä X avaa filellä tiedoston ja sen jälkeen käyttäjä Y muuttaa sitä tiedostoa, niin jääkö käyttäjä X:lle vanha versio tiedostosta luettavaksi?

tesmu [05.11.2010 22:20:09]

#

Käsittääkseni Y ei pysty muuttamaan tiedostoa sillon kun X on sen avannut omaan käyttöön. Tiedosto pitää sulkea ennenkuin Y voi sinne muutoksia tehdä. Näin olen käsittänyt asian.

Jokotai [05.11.2010 22:21:19]

#

Kiitos.
Minkälainen virhe tulee tästä käyttäjälle Y?

Metabolix [05.11.2010 22:25:39]

#

Ei ole mitään oliota, vaan on file-funktio, joka lukee koko tiedoston kerralla taulukkomuuttujaan. Funktiokutsun jälkeen luetuilla tiedoilla ei ole enää mitään tekemistä tiedoston kanssa.

Pahimmassa tapauksessa voi käydä niin, että käyttäjä Y muuttaa tiedostoa juuri samalla hetkellä, kun X:llä on lukeminen kesken, ja X saakin luettua joko vain osan tiedostosta tai jonkin yhdistelmän vanhaa ja uutta tietoa. Lopputulos voi siis olla jompikumpi seuraavista:

Vanha 1
Va
Vanha 1
Vai 2
Uusi 3

Tällaiset ongelmat voi välttää lukitsemalla tiedoston ja käsittelemällä sitä vaikeammilla tiedostofunktioilla (fread ja fwrite). Toinen vaihtoehto on lukita jokin toinen tiedosto (esim. tiedosto.lock, jos käsiteltävänä on tiedosto.txt).

Edit: tesmun käsitys on siis väärä. PHP ei automaattisesti estä tiedostojen samanaikaista käyttöä.

Jokotai [05.11.2010 22:29:21]

#

Kiitosta taas kerran.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta