Visualizzazione risultati 1 fino 8 di 8

Discussione: Accesso concorrente file XML

  1. #1
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito Accesso concorrente file XML

    Uso SimpleXML per operazioni di lettura/scrittura su file XML.
    Vorrei gestire l'accesso concorrente di più script allo stesso file con la funzione flock() ma tutte le guide che ho trovato aprono il file con la fopen() mentre io vorrei usare la simplexml_load_file().
    Come posso fare?

  2. #2
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Ma flock di solito su usa solo per la scrittura dato che è inutile per la lettura.
    Quindi per aprire usi simplexml_load_file e per salvare fopen + flock (o soltanto file_put_contents).

  3. #3
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito

    Il mio script deve leggere da file XML, elaborare, quindi salvare delle modifiche. Non è che legga e basta o scriva e basta...
    Quindi se il file lo apro con simplexml_load_file() poi come posso aprirlo di nuovo con fopen()?

  4. #4
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Ma non è vietato.

    Codice PHP:
    <?php
    $xml
    = simplexml_load_file("file.xml");

    $xml->articolo[0]->titolo = "Ciao!";

    file_put_contents("file.xml", $xml->asXML(), LOCK_EX); // salva tutto il file con la modifica al titolo
    ?>

  5. #5
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito

    Ma il file lo devo bloccare prima di leggerne il contenuto, altrimenti è tutto inutile, no?

  6. #6
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Già. Non puoi usare solamente simplexml_load_file, ma al limite __construct() (new SimpleXMLElement()) o simplexml_load_string con fopen, flock...

  7. #7
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito

    Non mi è molto chiaro, potresti farmi un esempio come quello fatto sopra?

  8. #8
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    non sò se esiste "la ruota", quindi non vorrei reinventarla...

    l'unica cosa che mi viene in mente è tipo un valore su un file di testo condiviso, per simulare delle operazioni atomiche e fermare le successivi operazioni che tentano di accedere alla funzione di modifica, intanto salvarle per poi eseguirle in modo fifo appena viene ceduto il lock..(che ne so magari messe in un array) multi dimensionale..

    sicuramente però esiste qualcosa di più semplice da usare.. :)

    edit: da quanto ho letto xml e xslt soffrono proprio i problemi di concorrenza...:/
    Ultima modifica di Xsescott : 24-10-2009 alle ore 19.38.12
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •