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.