Comment utiliser le verrouillage de fichier PHPflock

墨辰丷
Libérer: 2023-03-31 08:14:02
original
1592 Les gens l'ont consulté

Cet article le présente principalement. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

L'exemple de cet article décrit comment PHP utilise flock pour implémenter le verrouillage de fichiers. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :

L'explication de flock dans la documentation officielle est : flock() vous permet d'implémenter un modèle simple de lecture/écriture qui peut être utilisé sur n'importe quelle plateforme (y compris la plupart des dérivés Unix et même Windows). Si le verrou bloque (en cas de code d'erreur EWOULDBLOCK), définissez le troisième paramètre facultatif sur TRUE. Les opérations de verrouillage peuvent également être libérées par fclose() (également appelée automatiquement lorsque l'exécution du code est terminée).

Pour faire simple, il s'agit de verrouiller un fichier afin que plusieurs processus ne puissent pas accéder au fichier, évitant ainsi les conflits. Par exemple :

<?php 
  $file = fopen("test.txt","w+"); 
  if (flock($file,LOCK_EX)) 
  { 
   fwrite($file,"Write something"); 
   flock($file,LOCK_UN); 
  } 
  else 
  { 
    echo "Error locking file!"; 
  } 
  fclose($file); 
?>
Copier après la connexion

Explication :

1. La signification de ce code est d'ouvrir le fichier test.txt en mode lecture et écriture. Lorsqu'un utilisateur appelle la page php, cela. est Lors de l'exploitation du fichier test.txt, le code flock ($ file, LOCK_EX) sera exécuté, ce qui verrouillera exclusivement le fichier test.txt (le fichier ne peut être lu et écrit que par cet utilisateur), puis s'il y a d'autres nouveaux utilisateurs Si vous souhaitez accéder au fichier, vous serez bloqué jusqu'à ce que le premier ferme le fichier (libère le verrou).

2. Si le code est modifié en flock($file,LOCK_EX+LOCK_NB), cela signifie qu'une erreur est renvoyée directement lors du verrouillage. Puis si un nouvel utilisateur accède au fichier, "Erreur de verrouillage du fichier !" sera affiché.

3. La syntaxe de cette fonction est flock(file,lock,block), où file est requis. Spécifie un fichier ouvert à verrouiller ou à libérer. serrure requise. Spécifie le type de verrou à utiliser. le bloc est facultatif. S'il est défini sur 1 ou vrai, bloque les autres processus pendant le verrouillage.

Par exemple : veuillez écrire un morceau de code PHP pour vous assurer que plusieurs processus peuvent écrire le même fichier avec succès en même temps

function writeData($path, $mode,$data) 
{ 
  $fp = fopen($path, $mode);  
  $retries = 0; 
  $max_retries = 100;  
  do{ 
    if ($retries > 0)  
    { 
      usleep(rand(1, 10000)); 
    } 
    $retries += 1; 
  }while (!flock($fp, LOCK_EX) and $retries<= $max_retries);  
  if ($retries == $max_retries)  
  { 
    return false; 
  } 
  fwrite($fp, "$data\n"); 
  flock($fp, LOCK_UN); 
  fclose($fp);  
  return true;  
}
Copier après la connexion

Résumé : Ce qui précède C'est tout le contenu de cet article, j'espère qu'il pourra être utile à l'étude de chacun.

Recommandations associées :

Méthodes PHP pour manipuler les dates et les chaînes

Outil PHP pour la mise en cache des pages Web code et utilisation

php contrôle tous les appels de fonctions en arrière-plan basés sur ajax

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!