flock

(PHP 4, PHP 5)

flockVerrouille le fichier

Description

bool flock ( resource $handle , int $operation [, int &$wouldblock ] )

flock() permet de r�aliser un syst�me simple de verrous �criture/lecture, qui peut �tre utilis� sur n'importe quelle plate-forme (Unix et Windows compris).

Le verrou est �galement lev� avec la fonction fclose() (qui est �galement automatiquement appel�e lors de la fin du script).

PHP dispose d'un syst�me complet de verrouillage de fichiers. Tous les programmes qui acc�dent au fichier doivent utiliser la m�me m�thode de verrouillage pour qu'il soit efficace.

Liste de param�tres

handle

Un pointeur de fichier ouvert.

operation

operation peut prendre une des valeurs suivantes :

  • LOCK_SH pour acqu�rir un verrou partag� (lecture).
  • LOCK_EX pour acqu�rir un verrou exclusif (�criture).
  • LOCK_UN pour lib�rer un verrou (partag� ou exclusif).
  • LOCK_NB si vous voulez que flock() ne se bloque pas durant le verrouillage. (non support� sous Windows)

wouldblock

Ce troisi�me argument optionnel est d�fini � TRUE si le verrou doit bloquer le script (condition d'erreur EWOULDBLOCK).

Valeurs de retour

Cette fonction retourne TRUE en cas de succ�s, FALSE en cas d'�chec.

Historique

Version Description
4.0.1 Les constantes LOCK_XXX ont �t� ajout�es. Avant, vous deviez utiliser 1 pour LOCK_SH, 2 pour LOCK_EX, 3 pour LOCK_UN et 4 pour LOCK_NB

Exemples

Exemple #1 Exemple avec flock()

<?php

$fp 
fopen("/tmp/lock.txt""w");

if (
flock($fpLOCK_EX)) { // pose un verrou exclusif
    
ftruncate($fp0);     // effacement du contenu
    
fwrite($fp"�crire dans un fichier\n");
    
flock($fpLOCK_UN);   // lib�re le verrou
} else {
    echo 
"Impossible de verrouiller le fichier !";
}

fclose($fp);

?>

Notes

Note: flock() est obligatoire sous Windows.

Note: Comme flock() requiert un pointeur de fichier, vous aurez peut �tre � utiliser un verrou sp�cial pour prot�ger l'acc�s au fichier que vous voulez tronquer en l'ouvrant en mode d'�criture (avec "w" ou "w+" comme argument de fopen()).

Avertissement

flock() ne fonctionne pas sur NFS ou sur les autres syst�mes de fichiers r�seaux. V�rifiez la documentation de votre syst�me d'exploitation pour plus de d�tails.

Sur certains syst�mes d'exploitation, flock() est impl�ment� au niveau processus. Lorsque vous utilisez une API multithread comme ISAPI, vous risquez de ne pas pouvoir avoir confiance en flock() pour prot�ger vos fichiers contre d'autres scripts PHP qui fonctionnent en parall�le sur d'autres threads du m�me serveur.

flock() n'est pas support� sur les vieux syst�mes de fichiers comme FAT et ses d�riv�s, et elle retournera forc�ment FALSE sous ces environnements (ceci est particuli�rement vrai pour les utilisateurs de Windows 98).