IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

S'assurer de l'écriture séquentielle d'un fichier


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 25
    Par défaut S'assurer de l'écriture séquentielle d'un fichier
    Bonjour,

    Il m'arrive de devoir faire appel 2 fois (successivement) à une fonction PHP qui modifie un fichier XML pour mise à jour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xml->load() --traitements-- $xml->save()
    En théorie, tout se fait séquentiellement et le deuxième appel à la fonction ne devrait pas trouver le fichier XML ouvert.
    Mais dans la pratique, je me demande, suite à une charge serveur ou autre, si on ne pourrait pas se trouver dans ce cas et que le deuxième traitement ne puisse aboutir.

    Les rares discussions trouvées sur Internet ne parlent que de problèmes liés à l'upload de fichiers mais pour mon cas tout se passe en local sur le serveur.
    Il existe bien la fonction flock() mais elle ne répond pas à mes besoins et a des limitations quand au système de fichiers FAT (l'appli tourne aussi sur clé USB).
    A noter que le fichier XML est personnel à chaque utilisateur.

    Je désire donc savoir si il est nécessaire de sécuriser ce traitement ou si PHP ne permettra pas ce genre de problème.
    Si il faut sécuriser ce traitement, avez-vous des pistes à me fournir (on peut par exemple créer un fichier au début de la fonction, le supprimer à la fin et ne la lancer que si ce fichier est absent).

    Merci d'avance.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    créer un fichier .lock

  3. #3
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 25
    Par défaut
    Tout d'abord merci stealth35 pour ta réponse.

    Apparemment, il s'agit d'émuler la fonction flock() de PHP en utilisant un fichier (un peu comme je le sous-entendais).

    Je ne sais pas si les fichiers .flock ont des méthodes spécifiques qui les gèrent (je sais qu'Apache les utilise mais PHP ?) mais j'ai déniché celà sur la toile : comment-utiliser-les-locks-avec-des-taches-cron-en-php

    Me conseilles-tu de partir dans cette direction ?

    Merci

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    un file_put_contents suffit, c'est un méthode toute simple

  5. #5
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 25
    Par défaut
    Oui sauf qu'il ne s'agit pas d'une fonction atomique.

    Il faudrait plutôt voir vers l'utilisation de rename(), quoique je ne suis pas certain de la conservation de cette propriété sous Windows.

    Mais peut être suis-je en train de me prendre la tête pour un fichier qui, après tout, n'est accessible que par son utilisateur attitré.

    Un simple fopen() en début de fonction suivi d'un fclose() et d'un unlink() en final devrait suffire pour ce cas.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par bewonder Voir le message
    Mais peut être suis-je en train de me prendre la tête pour un fichier qui, après tout, n'est accessible que par son utilisateur attitré.
    oui c'est plutôt ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/02/2015, 12h04
  2. Écriture en début de fichier sans écrasement
    Par Rolf-IV dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2007, 13h14
  3. [POI] Problème écriture/lecture dans un fichier Excel
    Par steuve dans le forum Documents
    Réponses: 6
    Dernier message: 02/07/2007, 15h47
  4. écriture/lecture dans des fichiers
    Par rafale001 dans le forum C
    Réponses: 14
    Dernier message: 02/03/2007, 16h59
  5. écritures concurrentes dans un fichier
    Par djmalo dans le forum C
    Réponses: 9
    Dernier message: 06/03/2005, 01h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo