• [^] # Re: Un ch'tit algo...

    Posté par (site web personnel) . En réponse au message PHP: Lock sur le system de fichier ?. Évalué à 3.

    Même problème.
    A : !file_exists ("test.lock") => ok
    B : !file_exists ("test.lock") => ok
    A : $f=fopen ("test.lock", "w") => ok
    B : $f=fopen ("test.lock", "w") => ok

    et paf, ils sont tout les deux dans la boucle en même temps.

    Le délai entre le test d'existance et l'ouverture est faible mais il existe. Si tu es sur un site Web en charge, rien ne te garantie que rien ne s'y insèrera.

    Quoi que tu fasses, tu auras toujours un test suivi d'une prise de décision. Le problème c'est que rien ne te permet d'être sur qu'un process concurrent ne fera pas le même test après le tien mais avant ta prise de décision.
    Quoi que tu veuilles faire, il te faudra un support de l'OS pour t'assurer un verouillage correct.


    Maintenant tout dépend de ce que tu veux faire. Si c'est pour garantir que tu n'exécutes pas deux compil de kernel simultanément, un vérouillage avec un bête .lock en testant l'existance suffit largement. C'est ce qu'utilisent la plupart des appli pour éviter deux lancements simultanés. Maintenant si tu fais un forum Web assez chargé avec un backend fichier, là il te faudra quelque chose de plus sûr.