Visualizzazione risultati 1 fino 7 di 7

Discussione: Come fare se cade la connessione?

  1. #1
    Guest

    Predefinito Come fare se cade la connessione?

    Il titolo del messaggio mi rendo conto sia strano. Ora mi spiego meglio.

    Supponiamo che, per un motivo o per un altro, il visitatore di un sito, su cui è attiva una sessione per mezzo di uno script php, non chiuda come si deve la stessa sessione attraverso, per esempio, il logout. Ovviamente per il database, su cui sarà avvenuta la registrazione dell'ingresso dell'utente, l'utente in questione non è MAI uscito, non avendo mai ricevuto l'istruzione di, ad esempio, togliere il nome dalla lista presenti o settare l'orario e data di uscita.

    E qui arrivo alla domanda: in questo casi, come posso fare in modo che lo script, dopo un certo lasso di tempo in cui non riceve nessuna risposta dalla sessione dell'utente, setti la data di uscita nel database o, comunque, cancelli il nome dell'utente dalla tabella dei presenti?

    Fiuu, spero d'essere stato almeno chiaro ^_^''

  2. #2
    Guest

    Predefinito

    isnerisci nella tabella utente, un campo time li metti ad ogni caricamento di una pagina i ltime attuale

    nella query richiami i valori con il time uguale o maggiore a quello attuale - 1800 (ad esempio 30minuti)

  3. #3
    Guest

    Predefinito

    Temo di non aver capito lo scopo della query ^_^''

  4. #4
    Guest

    Predefinito

    hai dimenticato di dirci com'è struttarata la tabella delle sessioni
    se è una tabella con solo le sessioni basta un normale DELETE, altrimenti quando interroghi il database devi mettere un limite del tipo WHERE start_time < time-attuale-meno-durata-sessione

  5. #5
    Guest

    Predefinito

    Codice PHP:
    CREATE TABLE presenti(
    nome char(20) DEFAULT NULL,
    idrazza int(11) DEFAULT NULL,
    idgilda int(11) DEFAULT NULL,
    sesso text(1) DEFAULT NULL,
    ingresso datetime DEFAULT NULL,
    uscita datetime DEFAULT NULL,
    invisibile int(1) DEFAULT '0',
    idstanza int(11) NOT NULL
    );
    Ecco com'è strutturata, scusate ^^'. Partendo dal preconcetto che, in caso di connessione interrotta bruscamente, idstanza verrebbe settatato come zero, il problema è anche settare uscita quando la connessione viene interrotta.

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Ogni volta che l'utente ricarica la pagina potresti assegnare a "uscita" la data e l'ora attuale e quando passano tot. minuti dalla data attuale a quella di "uscita" fai in modo che l'utente venga considerato uscito.
    Ultima modifica di funcool : 01-06-2007 alle ore 09.12.46
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    Guest

    Predefinito

    Se lo assegno ad uscita mi si impalla tutto il sistema dei logout, ma potrei cmq creare una nuova colonna.

    Dunque, nella pagina principale che si apre una volta effettuato il login, c'è un frame laterale che serve per la navigazione tra le varie stanze (ricordo essere un gdr). Per aggiornare di volta in volta la lista dei presenti, ho dovuto inserire nella pagina che viene caricata nel frame un META TAG di refresh ogni 60 secondi. Potrebbe funzionare lo script detto da te se lo inserisco all'inizio della pagina? Mi spiego. Una volta effettuato l'aggiornamento, lo script aggiorna di volta in volta la nuova colonna con l'ora e data attuale. Quindi, prima della query di UPDATE, ne inserirei una di SELECT, dove indico come condizione "WHERE DATE_ADD(ora, INTERVAL 1 MINUTE)>NOW()". Ovviamente, se il refresh viene fatto correttamente, questa query darà sempre risultato vuoto. Tuttavia ora sorge il problema: questa query si attiverebbe se cade la connessione? E se, come temo, non si attivasse, come faccio per farla eseguire periodicamente al di fuori della sessione?


    EDIT: dunque, ho letto in una guida delle funzioni per la gestione della connessione. In particolare, mi riferisco a queste

    set_time_limit(n)
    connection_status()
    connection_aborted()

    La prima setta un limite di tempo oltre il quale lo script non viene più eseguito (quindi, per come la intendo io, se viene eseguito una volta e poi non viene eseguito per n secondi la pagina si chiude e compare qualcosa del tipo "sessione scaduta").

    La seconda restituisce un intero riguardante lo stato della connessione (se normale, scaduta o interrotta).

    La terza restituisce TRUE se la connessione è stata interrotta bruscamente.

    Ora, mi chiedo: come caspita si usano in funzione delle connessioni che cadono et similia!? ç___ç
    Ultima modifica di Reaver : 01-06-2007 alle ore 18.38.30 Motivo: funzioni di timeout

Regole di scrittura

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