2011-12-13 25 views
5

Ho appena finito la mia domanda e ho un grosso problema. Devo consentire solo a 1 utente di accedervi alla volta. C'è una pagina indice accessibile per ogni utente ogni volta e il pulsante "start". Quando i clic dell'utente iniziano, i blocchi dell'applicazione e altri ppl devono attendere fino al termine dell'utente. Quando l'utente chiude la scheda/browser, l'applicazione deve sbloccarsi automaticamente. Ogni utente ha 5 minuti per utilizzare la mia app. Ho parzialmente risolto il mio problema, ma ancora non funziona correttamente - su ogni sito ho impostato lo script jquery che ogni 5 secondi trigger file "extend.php" sul (funzione di $ .get()) del server. Il file php modifica il file time.txt (lo cambia in time() + 5) e lo script sul sito intex verifica se (time()> time.txt content). In questo modo, quando gli usi chiudono la scheda/browser, l'app è accessibile. Ovviamente la mia app si basa anche sulle sessioni (quando l'utente chiude il browser, perde l'accesso). Su alcuni computer semplicemente non funziona (sembra che jquery non attivi il file extend.php e rende la mia app sempre accessibile). Quindi la mia domanda è: vedi altri modi per risolvere il mio problema?Controlla se l'utente è online (in diretta)

Il descr potrebbe essere disordinato ma ho voluto descrivere tutto strightforward;)

saluti.

+1

Su quale sistema operativo/browser non funziona. Inizia da lì e vedi se c'è qualche comunanza tra coloro che hanno il problema. Potresti essere a caccia di un problema di codice che è in realtà un problema del browser. – Brian

+0

Stai facendo la cosa giusta in linea di principio dal suono di esso. La prima cosa da fare è salire su una macchina su cui non funziona e vedere se sta generando errori visibili nel browser. – graphicdivine

risposta

0

si può mettere un LOCK su un tavolo mysql quando un utente è in linea e sbloccarlo quando sono offline.

L'unico problema è se il codice per sbloccare dimentica.

+0

Penso che questo fosse il problema che stava cercando di risolvere ... –

1

Il vostro metodo è OK, dovrebbe funzionare. Sì, node.js o qualsiasi altro javascript lato server può essere utilizzato per fare lo stesso, ma avere uno script attivato è di gran lunga la soluzione più semplice. Dovresti davvero concentrarti sul tempo per investigare ulteriormente su quali macchine non funzioni.

2

Prova ad utilizzare un un jQuery funzione di scaricare in modo che quando si fa clic sul pulsante di chiusura il browser Web esegue un'ultima riga di script prima che le uscite utente. Esempio:

$(window).unload(function(){ 

    "your php function to unlock the app here" 

}); 

Spero che questo aiuti.

1

Se è trattenuto per 5 minuti, quindi impostarlo scada in 5 minuti. Puoi usare un contatore in jquery per mostrare quanto tempo è disponibile. Quando raggiunge la scadenza, informa l'utente che il tempo è scaduto. Una volta che il tempo è scaduto o l'utente ha terminato l'aggiornamento, l'app time.txt to time() o comunque la gestisci normalmente quando l'app è accessibile. Nessun polling e 1 aggiornamento.