Maison  >  Article  >  développement back-end  >  Comparaison des méthodes PHP bloquantes et non bloquantes pour écrire des fichiers à l'aide de flock

Comparaison des méthodes PHP bloquantes et non bloquantes pour écrire des fichiers à l'aide de flock

小云云
小云云original
2018-02-08 09:41:511607parcourir

Cet article partage principalement avec vous la comparaison des méthodes bloquantes et non bloquantes d'écriture de fichiers à l'aide de flock en PHP. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

Code d'écriture bloquant : (Tous les programmes attendront la fin de la dernière exécution du programme avant de s'exécuter et expireront dans 30 secondes)

<?php 
$file = fopen("test.txt","w+"); 
 
$t1 = microtime(TRUE); 
if (flock($file,LOCK_EX)) 
{ 
 sleep(10); 
 fwrite($file,"Write something"); 
 flock($file,LOCK_UN); 
 echo "Ok locking file!"; 
} 
else 
{ 
 echo "Error locking file!"; 
} 
 
fclose($file); 
 
$t2 = microtime(TRUE); 
echo sprintf("%.6f",($t2-$t1));

Code d'écriture non bloquant : (Tant que si le fichier est occupé, une erreur de verrouillage du fichier s'affiche !)

<?php 
$file = fopen("test.txt","a+"); 
 
$t1 = microtime(TRUE); 
if (flock($file,LOCK_EX|LOCK_NB)) 
{ 
 sleep(10); 
 fwrite($file,"Write something"); 
 flock($file,LOCK_UN); 
 echo "Ok locking file!"; 
} 
else 
{ 
 echo "Error locking file!"; 
} 
 
fclose($file); 
 
$t2 = microtime(TRUE); 
echo sprintf("%.6f",($t2-$t1));

Recommandations associées :

Compréhension approfondie des coroutines et du blocage en php

Explication détaillée des exemples d'utilisation des balises