Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Accesso sincrono

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    62

    Accesso sincrono

    Forse il titolo non è molto chiaro comunque il mio problema è il seguente.

    Un certo numero di utenti accedono ad un file per leggerlo o modificarlo.
    La mia necessità è che un solo utente alla volta possa agire su tale file per leggerlo o modificarlo quindi se A e B "arrivano" quasi contemporaneamente ma A un attimo prima e ad esempio A vuole modificare il file e B invece vuole leggerlo io voglio che A possa agire per modificare il file e una volta finito B possa accedere in lettura al file disponendo così degli ultimi dati.

    Esiste in php una funzione che attribuisce una risorsa ad un utente alla volta e crea una coda per tutti gli altri ?

    Spero che il problema sia chiaro.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    62
    up

  3. #3
    Premetto che io di database ne so poco e nulla quindi prego gli utenti che ne sanno più di me di correggermi dove necessario. L'idea che mi era venuta era quella di appoggiarsi ad un database MySQL. In pratica mettiamo che nel database tu abbia una tabella del genere:
    codice:
    +------------+------------+
    |   UTENTE   |    CODA    |
    +------------+------------+
    | utente 1   |     0      |
    +------------+------------+
    | utente 2   |     0      |
    +------------+------------+
    | ........   |     0      |
    +------------+------------+
    | utente n   |     0      |
    +------------+------------+
    Mettiamo caso che utente 1 si connetta per primo per visualizzare e modificare il file di cui parli, per prima cosa controlli nel database che nessun utente abbia nel campo CODA un valore maggiore di 0, se è così allora assegni al campo CODA relativo all'utente 1 il valore 1. Quindi avrai nella tabella del database una cosa del genere:
    codice:
    +------------+------------+
    |   UTENTE   |    CODA    |
    +------------+------------+
    | utente 1   |     1      |
    +------------+------------+
    | utente 2   |     0      |
    +------------+------------+
    | ........   |     0      |
    +------------+------------+
    | utente n   |     0      |
    +------------+------------+
    Mettiamo caso che adesso si connetta utente 2 quindi controlli nuovamente nel databse se qualcuno ha nel campo CODA un vaolre maggiore di 0, sta volta c'è qualcuno che ha un un valore maggiore di 0, quindi stampi un messaggio in cui dici all'utente 2 di riprovare a visualizzare il file più tardi poichè il file lo sta già visualizzando qualcuno. Una volta che l'utente 1 ha finito di visualizzare il file fai ritornare la tabella del database nella situazione iniziale.

    La mia proposta è ancora parecchio incompleta (manca la parte in cui gestisci realmente la coda degli utenti) e non sapendo io nulla di database non so dirti come procedere nella realizzazione, ma credo che questa mia proposta sia una buona base dalla quale partire.

  4. #4
    sinceramente non ho ben letto la risposta di stan.bfi però con i db puoi fare ciò che chiedi

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    18
    praticamente ti conviene utilizzare le transazioni in mysql (tabelle tipo innoDB)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.