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);
?>