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?
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.
Kiitos.
Minkälainen virhe tulee tästä käyttäjälle Y?
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öä.
Kiitosta taas kerran.
Aihe on jo aika vanha, joten et voi enää vastata siihen.