PHP flock()-funktio
Määrittely ja käyttö
flock()-funktio lukitsee tai vapauttaa tiedoston.
Onnistuessaan palauttaa true. Epäonnistuessaan palauttaa false.
Syntaksi
flock(file,lock,block)
Parametrit | Kuvaus |
---|---|
file | Välttämätön. Määrittää lukitettava tai vapautettava avoin tiedosto. |
lock | Välttämätön. Määrittää käytettävä lukitustyyppi. |
block | Valinnainen. Jos asetetaan 1 tai true, estetään muiden prosessien pääsy lukitsemisen aikana. |
Kuvaus
flock() toiminnon file MUSTAA olla jo avattu tiedostoviite.
lock Parametri voi olla seuraavista arvoista yksi:
- Hankitaksesi jaetun lukituksen (lukuohjelma), aseta lock asetettuna LOCK_SH (PHP 4.0.1 ennen versiota 1 asetettuna 1).
- Hankitaksesi yksinomaisen lukituksen (kirjoittava ohjelma), aseta lock asetettuna LOCK_EX (PHP 4.0.1 ennen versiota 2 asetettuna 2).
- Vapauttaaksesi lukituksen (joko jaettu tai yksinomainen), aseta lock asetettuna LOCK_UN (PHP 4.0.1 ennen versiota 3 asetettuna 3).
- Jos et halua flock() estyvän lukitusta aikana, anna lock Lisää LOCK_NB (PHP 4.0.1 ennen versiota 4 asetettuna 4).
Vinkit ja kommentit
Vinkki:Voit käyttää fclose() Lukitustoiminto vapautetaan myös automaattisesti, kun koodin suoritus päätyy.
Kommentti:Koska flock() tarvitsee tiedostoviitteen, saattaa olla pakko käyttää erityistä lukitustiedostoa suojataksesi tiedoston, jonka avaat kirjoitusmuodossa (lisää "w" tai "w+" fopen() -funktioon).
Esimerkki
<?php $file = fopen("test.txt","w+"); // exclusive locking if (flock($file,LOCK_EX)) { fwrite($file,"Write something"); // release lock flock($file,LOCK_UN); } else { echo "Error locking file!"; } fclose($file); ?>