Fonction flock
La fonction flock pose ou retire un verrou sur un fichier. Son premier paramètre est un pointeur de fichier, obtenu via fopen, son deuxième paramètre est le type de verrou (LOCK_SH, LOCK_EX ou LOCK_UN), et son troisième paramètre optionnel est un drapeau pour une opération non bloquante.
Syntaxe
flock(resource $handle, int $operation, int &$would_block = null): bool
Exemple
Verrouillage de fichier pour un accès exclusif (écriture) :
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX)) {
ftruncate($file, 0);
fwrite($file, "New data");
flock($file, LOCK_UN);
}
fclose($file);
?>
Exemple
Verrou partagé pour la lecture :
<?php
$file = fopen("data.txt", "r");
if (flock($file, LOCK_SH)) {
$content = fread($file, filesize("data.txt"));
flock($file, LOCK_UN);
}
fclose($file);
echo $content;
?>
Exemple
Tentative de capture de verrou non bloquante :
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
if ($would_block) {
echo "File is locked by another process";
} else {
fwrite($file, "Data");
flock($file, LOCK_UN);
}
}
fclose($file);
?>
Voir aussi
-
la fonction
fopen,
qui ouvre un fichier -
la fonction
fclose,
qui ferme un fichier -
la fonction
is_writable,
qui vérifie la possibilité d'écriture