Utilisant pas mal de fichiers texte (pour cause de MySQL très lourd chez Online) pour le stockage sur mes sites (blogs, stats, forums, etc), je suis en train de regarder les mécanismes de verrouillage, que je ne connais pas du tout. Voici un exemple de code :
$fpw = fopen ("test.csv", "w");
flock($fpw, LOCK_EX);
$fpw2 = fopen ("test.csv", "w");
fwrite ($fpw2, "glups");
flock($fpw, LOCK_UN);
fclose ($fpw);
fclose ($fpw2);
A la fin, mon fichier test.csv contient bien "glups" comme chaîne de caractère, alors que j'ai préalablement bloqué le fichier (je m'attendais donc à un bloquage). Je dois interpréter ça comment :
- le flock n'a pas marché (ce qui ne semble pas être le cas, puisque ça renvoit true)
- l'écriture sur fpw2 est en quelque sorte mise en cache (?) et réalisée une fois le fichier débloqué ?
Autre chose que je me demandais : si j'ai un PHP Time Out sur la page avant d'avoir débloqué le fichier, est-ce que le fichier est libéré de manière automatique ou bien est-ce qu'il reste indéfiniment bloqué ou alors bloqué jusqu'à expiration d'un délai ?
# Connait pas php mais bon
Posté par Yusei (Mastodon) . Évalué à 2.
[^] # Re: Connait pas php mais bon
Posté par Robert VISEUR (site web personnel) . Évalué à 1.
[^] # Re: Connait pas php mais bon
Posté par Yusei (Mastodon) . Évalué à 2.
Ceci dit la réponse en dessous explique tout.
# Ca marche pas comme ca
Posté par Pascal Terjan (site web personnel) . Évalué à 5.
Par ailleurs il faut savoir que ca ne marche pas sous certains OS ou sur certains filesystems (FAT par exemple)...
# flock au niveau processus
Posté par The Fab . Évalué à 2.
- flock fonctionne au niveau du processus et a des problèmes avec les serveurs multithread
- flock ne marche pas sur NFS
[^] # Re: flock au niveau processus
Posté par Robert VISEUR (site web personnel) . Évalué à 2.
http://be.php.net/manual/fr/function.flock.php(...)
La question que je me pose est : y a-t-il mieux comme mécanisme ?
Je me demandais aussi -suite à la réponse de Pascal Terjan (merci, Pascal!) - s'il existait une fonction de blocage complet (interdisant momentanéement la lecture et l'écriture) ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.