Documentation PHP

flock

(PHP 4, PHP 5)

flock — Verrouille 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
    
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).



Ceci n'est pas la documentation originale du langage de programmation php, pour y accéder visiter le site www.php.net

Support du web, outils, services, compteurs, scripts, générateurs et autres outils pour les webmasters gratuitement à 100%
Page générée en 0.001935 secondes.