gratifiant > comp.lang.* > comp.lang.php

jp (21/12/2019, 21h57)
Bonjour à tous.

J'ai un script qui ouvre un fichier en écriture et qui le ferme presque
tout de suite après. Ma question est de savoir ce qu'il se passerait si
deux personnes ouvraient ce fichier en même temps, ou du moins si une
seconde personne l'ouvrait et essayait d'écrire dedans avant que la
première ne l'ait fermé? Est-ce que je dois synchroniser l'accès au
fichier, ou bien est-ce automatique en PHP? Et si je dois synchroniser,
est-ce que quelqu'un aurait l'amabilité de me donner un lien qui traite
de ça?

Merci d'avance.
Denis Beauregard (21/12/2019, 23h20)
Le 21 Dec 2019 19:57:17 GMT, jp <bloiiing> écrivait dans
fr.comp.lang.php:

>Bonjour à tous.
>J'ai un script qui ouvre un fichier en écriture et qui le ferme presque
>tout de suite après. Ma question est de savoir ce qu'il se passerait si
>deux personnes ouvraient ce fichier en même temps, ou du moins si une
>seconde personne l'ouvrait et essayait d'écrire dedans avant que la
>première ne l'ait fermé? Est-ce que je dois synchroniser l'accès au
>fichier, ou bien est-ce automatique en PHP? Et si je dois synchroniser,
>est-ce que quelqu'un aurait l'amabilité de me donner un lien qui traite
>de ça?


Pourquoi ne pas l'essayer en local ?

Ouvrir 2 navigateurs et placer un compteur disons de 30 secondes,
puis lancer le script depuis les deux navigateurs. Avec bien sûr
une vérification des erreurs tout de suite après le fput.

Denis
jp (22/12/2019, 20h23)
Le Sat, 21 Dec 2019 16:20:25 -0500, Denis Beauregard a écrit :

> Pourquoi ne pas l'essayer en local ?
> Ouvrir 2 navigateurs et placer un compteur disons de 30 secondes,
> puis lancer le script depuis les deux navigateurs. Avec bien sûr une
> vérification des erreurs tout de suite après le fput.


Merci pour la réponse. En fait je crois bien que j'ai trouvé ce que je
cherchais... C'est ici:

Merci et a+.
Jean François Ortolo (24/12/2019, 17h47)
Le 22/12/2019 à 19:23, jp a écrit :
> Le Sat, 21 Dec 2019 16:20:25 -0500, Denis Beauregard a écrit :
> Merci pour la réponse. En fait je crois bien que j'ai trouvé ce que je
> cherchais... C'est ici:
> Merci et a+.


Pardon

C'est un cas classique d'accès en écriture à une ressource partagée.

D'abord : flock().

Ensuite : L'agorithme Lecteur/Rédacteur.

J'ai fait moi-même une classe de cache MySQL utilisant cet
algorithme, avec des mémoires partagées au lieu de fichiers.

Amicalement.

Jean François Ortolo
Discussions similaires