flock

creationdev

Documentation

Référencement web expert
Référencement web expert

750$ CAD

Référencement web optimisé
Référencement web optimisé

500$ CAD

Conception web standard
Conception web standard

2500$ CAD

Conception web ecommerce
Conception web ecommerce

2500$ CAD

Formation référencement web
Formation référencement web

100$ CAD

Conception web extra
Conception web extra

5000$ CAD

Conception d'application web
Conception d'application web

100$ CAD

Référencement web stratégique
Référencement web stratégique

1000$ CAD

Conception web microsite
Conception web microsite

1000$ CAD

Référencement web organique
Référencement web organique

300$ CAD

Fonction

Fonction

flock

flock

Page Vue 15 nov. 2018
Page Vue 60 fois

(PHP 4, PHP 5, PHP 7, PHP 8)

flock — Verrouille le fichier

Description

flock(resource $stream, int $operation, int &$would_block = null): bool

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 fclose(), ou quand stream est ramassé par le ramasse-miette.

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. Par défaut, cette fonction se bloquera tant que le verrou demandé ne sera pas acquis ; ce comportement peut être contrôlé avec l'option LOCK_NB dont vous trouverez la documentation ci-dessous.

Liste de paramètres

stream

Un pointeur de système de fichiers de type ressource qui est habituellement créé en utilisant la fonction fopen().

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).

Il est également possible d'ajouter LOCK_NB comme masque d'une des opérations précédentes si vous ne voulez pas que la fonction flock() bloque durant le verrouillage.

would_block

Ce troisième argument optionnel est défini à 1 si le verrou doit bloquer le script (condition d'erreur EWOULDBLOCK).

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Exemples

Exemple #1 Exemple avec flock()

<?php

$fp = fopen("/tmp/lock.txt", "r+");

if (flock($fp, LOCK_EX)) { // acquière un verrou exclusif
ftruncate($fp, 0); // effacement du contenu
fwrite($fp, "Écrire dans un fichier\n");
fflush($fp); // libère le contenu avant d'enlever le verrou
flock($fp, LOCK_UN); // Enlève le verrou
} else {
echo "Impossible de verrouiller le fichier !";
}

fclose($fp);

?>

Exemple #2 Exemple avec flock() en utilisant l'option LOCK_NB

<?php
$fp = fopen('/tmp/lock.txt', 'r+');

/* Activation de l'option LOCK_NB lors d'une opération LOCK_EX */
if(!flock($fp, LOCK_EX | LOCK_NB)) {
echo 'Impossible d\'obtenir le verrou';
exit(-1);
}

/* ... */

fclose($fp);
?>

Notes

Note:

flock() utilise les verrous obligatoires sous Windows, qui sont aussi supportés sur Linux et les systèmes dérivés de System V au moyen de l'appel système fcntl(): si le fichier en question a le bit setgid positionné et le bit de groupe vide. Sur Linux, le système de fichiers devra être monté avec l'option mand pour que cela fonctionne.

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()).

Note:

Ne devrait être utilisé que sur des ressources issues de fopen() pour des fichiers locaux ou via le gestionnaire de flux personnalisé en définissant streamWrapper::stream_lock().

Avertissement

Assigner une autre valeur à l'argument stream dans ce code libèrera le verrou.

Avertissement

Sur certains systèmes d'exploitation, flock() est implémenté au niveau processus. Lorsque vous utilisez une API multithread, 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.

Note:

Sur Windows, si la procédure de verrou ouvre une fichier une deuxième fois, il ne peut pas accéder au fichier à travers ce gestionnaire jusqu'à ce le fichier soit déverrouillé.


Source : http://www.php.net/
Ref : fonction-flock.php




Contact

Contact

Veuillez saisir les infos dans le formulaire d'identification
suivant pour concevoir et référencer votre site.









Veuillez saisir votre message.

Carte d'affaires

Affichage de la carte d'affaires recto/verso.

Carte d'affaires recto
Carte d'affaires verso

Partagez

Partagez

Discussion ayant comme sujet la page flock.

©2025 creationdev -  F.A.Q. -  Soutien -  Haut de page
THÈMES: