à ma connaissance c'est géré par l'OS (donc en mémoire). En fait je n'en sais rien mais je n'ai rien vu sur le disque qui puisse s'y rapporter et je me dis que si c'était géré au niveau disque ça aurait les mêmes défauts que les solutions étudiées plus haut qu'on peut faire nous même au niveau disque.
Aucun problème normalement en cas de coupure inopinée du programme (le verrou devrait partir). Ceci dit tu peux tester avec un script PHP et un gros "kill" au milieu, ça évitera que je te fasse faire des bêtises.
> Du coup, je ne vois pas trop ce qu'apporte flock par rapport à ma solution
Argh, et c'est en répondant que je vois potentiellement le problème de ta solution. En fait le problème ici n'intervient que si tu fais des lectures.
Le différence entre flock et ton système c'est que flock pose un verrou même pour la lecture. Le verrou est partagé pour pouvoir faire des lectures simultanées mais il existe, et empêche l'écriture de commencer.
Le problème survient dans le scénario suivant (je prend un FS unix comme base, sous win je ne sais pas quel serait la conséquence) :
A: commence la lecture
B: cherche à commencer l'écriture donc déplace le fichier
A: aucun pb sous unix, le fichier ouvert reste accessible, on utilise l'inode à partir de là donc le déplacement n'interfère pas
B: modifie le fichier
A: continue sa lecture, avec un fichier modifié, potentiellement dans un état intermédiaire (donc non valide) ou non compatible avec le début de la lecture
Bref, ton système risque de faire des corruptions si tu fais de la lecture. Si tu ne fais que de l'écriture ça doit aller (sous réserves, comme la première fois). Avec flock le verrou en écriture n'est pas obtenu tant que les lectures ne sont pas finies.
> La doc de la fonction flock sur php.net
Le flock() utilisé par PHP n'est qu'un wrapper vers le même que tu as en C. Tu peux trouver une doc sommaire dans le man, et probablement plein de trucs dans des bons bouquins de C.
> P.S. : j'ai oublié de te remercier pour tes renseignements et ta patience Eric. C'est chose faite !
[^] # Re: Un ch'tit algo...
Posté par Éric (site web personnel) . En réponse au message PHP: Lock sur le system de fichier ?. Évalué à 3.
Aucun problème normalement en cas de coupure inopinée du programme (le verrou devrait partir). Ceci dit tu peux tester avec un script PHP et un gros "kill" au milieu, ça évitera que je te fasse faire des bêtises.
> Du coup, je ne vois pas trop ce qu'apporte flock par rapport à ma solution
Argh, et c'est en répondant que je vois potentiellement le problème de ta solution. En fait le problème ici n'intervient que si tu fais des lectures.
Le différence entre flock et ton système c'est que flock pose un verrou même pour la lecture. Le verrou est partagé pour pouvoir faire des lectures simultanées mais il existe, et empêche l'écriture de commencer.
Le problème survient dans le scénario suivant (je prend un FS unix comme base, sous win je ne sais pas quel serait la conséquence) :
A: commence la lecture
B: cherche à commencer l'écriture donc déplace le fichier
A: aucun pb sous unix, le fichier ouvert reste accessible, on utilise l'inode à partir de là donc le déplacement n'interfère pas
B: modifie le fichier
A: continue sa lecture, avec un fichier modifié, potentiellement dans un état intermédiaire (donc non valide) ou non compatible avec le début de la lecture
Bref, ton système risque de faire des corruptions si tu fais de la lecture. Si tu ne fais que de l'écriture ça doit aller (sous réserves, comme la première fois). Avec flock le verrou en écriture n'est pas obtenu tant que les lectures ne sont pas finies.
> La doc de la fonction flock sur php.net
Le flock() utilisé par PHP n'est qu'un wrapper vers le même que tu as en C. Tu peux trouver une doc sommaire dans le man, et probablement plein de trucs dans des bons bouquins de C.
> P.S. : j'ai oublié de te remercier pour tes renseignements et ta patience Eric. C'est chose faite !
[attention, pub inside] No pb, et si vous aimez y'a un bouquin complet avec plein d'explications du même genre sur la seconde édition de mon livre : http://www.eyrolles.com/Informatique/Livre/9782212116694/livre-php-(...) [/pub]