Visualizzazione risultati 1 fino 5 di 5

Discussione: Mutex in php???

  1. #1
    Guest

    Arrow Mutex in php???

    Salve a tutti.

    Ho il seguente problema.
    Ho una pagina web il cui contenuto viene caricato da un file.
    Qualsiasi utente puo' modificare e salvare tale file. Il problema chiaramente si verifica nel momento in cui due utenti distinti decidono di modificare il file contemporaneamente.
    Di conseguenza vorrei fare in modo che l'accesso al file sia mutuamente esclusivo (ovvero puo' modificare al file solo una persona alla volta). Se un altro utente prova a modificarlo in quello stesso istante, gli verra' restituito un messaggio del tipo "Prova piu' tardi".

    Grazie.

    Ciao Ciao!!

  2. #2
    L'avatar di domenicoragusa
    domenicoragusa non è connesso Altervistiano Junior
    Data registrazione
    03-06-2005
    Messaggi
    618

    Predefinito

    potresti scrivere in un file-database 0 se non c'è nessuno che modifica, ed 1 se qualcuno modifica, il tuo script deve controllare se c'è 1 o 0 e poi si comporta a seconda dei casi.
    ciao ciao

    P.S. può darsi anche che ci sia un'altro modo ma io conosco solo questo...

  3. #3
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    una regione critica fatta con un semaforo:

    qualcuno ha aperto il file e lo sta modificando:
    creo un file .lock e lo lascio li finchè quello che ha aperto il file non lo chiude (quando lo chiude elimini il file .lock)

    prima di entrare in regione critica verifico se il semaforo è rosso (file .lock esistente) e se lo è do un messaggio d'errore e dico di riprovare più tardi (qualcuno sta già smanettando sul file)...

    se vuoi farla più raffinata puoi fare qualcosa che tenti di implementare un semaforo numerico con una coda dove la gente si può mettere in lista...

    ovviamente procedendo in quel modo rischi lo stallo: un utente non chiude il file e tutti gli altri aspettano a tempo indeterminato...

    qualcosa di già pronto lo trovi con la funzione flock:

    http://www.php.net/flock

    ;)
    Ultima modifica di Evcz : 21-11-2005 alle ore 00.26.44
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  4. #4
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    ...bruciato sul tempo...

    Esisterebbe per file questo
    http://it.php.net/manual/it/function.flock.php
    flock
    Ma a suo tempo mi pare di aver provato, e non era supportato da AV, ma mi potrei sbagliare.
    Soper certo che non funzionavano i lock al DB, ma questa è un'altra storia.

    Quella che propone domenico non ha molto senso dato che ci sarebbe lo stesso problema in accesso al file-database da modificare a 1 o 0.
    Per questo genere di cose c'è assolutamente bisogno di una funzione del sistema.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  5. #5
    L'avatar di domenicoragusa
    domenicoragusa non è connesso Altervistiano Junior
    Data registrazione
    03-06-2005
    Messaggi
    618

    Predefinito

    sai la cosa strana? che sono ritornato qui perchè l'ho capito anche io, un po' tardi

Regole di scrittura

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