Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Disconnessione utenti, troppe query

    Salve a tutti,
    più che un aiuto avrei bisogno di un consiglio!

    Ho pensato ad una soluzione per monitorare il controllo delle disconnessioni ma mi lascia alcuni dubbi. Ipotizziamo che nel db abbia la tabella UtentiConnessi con il campo UltimaRisposta. A questo punto ogni utente che si logga crea la sessione e viene inserito in questa tabella, fintanto che la sessione è integra con un setInterval di JS l'utente sovrascrive ogni 100 secondi (mediante AJAX) il suo campo UltimaRisposta inserendo l'ora attuale. Quando l'utente distruggerà la sessione smetterà automaticamente di inviare il "ping" al db. In questo modo nelle query che selezionano o contano gli utenti connessi dalla tabella UtentiConnessi basterà inserire un condizione WHERE (Ora - UltimaRisposta) > 100 per capire con un buon margine di tempo chi è ancora connesso ... ovviamente la tabella UtentiConnessi sarà ciclicamente ripulita: basterà eliminare tutti gli utenti con span maggiore a 100 ogni 1/2 ore ed il gioco è fatto!

    Francamente mi confesso ignorante a livello di carico di server ma un meccanismo del genere presuppone 36 query all'ora... moltiplicate per un utenza media che può andare dai 500 ai 2000 utenti risulta che il solo sistema che aggiorna la lista utenti può arrivare a bruciare più di 70000 query all'ora!

    Quanto ne vale la pena? Potreste darmi un canone di misura? Chessò un buon server da 200 euro all'anno quante query supporta mediamente all'ora?

    Posso capire che sarebbero numeri molto approssimativi ma trovandomi nel buio più totale sarebbero comunque un punto di partenza, accetto qualsiasi dritta

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Più che del numero di query, mi preoccuperei del n° di connessioni, un eccesso di quelle può causare un problema.
    Ma si risolve facilmente usando le connessioni persistenti, in modo che ogni utente ne crei una sola.
    E volendo, potresti portare il tempo di aggiornamento a 5 minuti invece che a 100 secondi

  3. #3
    Vediamo se ho capito ... con connessioni persistenti intendi che l'utente una volta loggato apre il collegamento al db e lo mantiene fino alla fine della "sessione" di lavoro?

    A livello di codice in PHP sarebbe semplicemente un classico
    codice:
    $conn = mysql_connect($host,$user,$pass);
    che però non viene chiuso? E' questo che intendi?



    (Domandina, se non chiudo automaticamente la connessione questa quando si chiude? alla chiusura della pagina interessata o alla chiusura del browser?
    E' corretto un meccanismo del tipo
    codice:
    session_start();
    session_destroy();
    mysql_close();
    che lega la connessione alla sessione?)



    Grazie a tutti per le risposte

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    le connessioni persistenti si fanno con la funzione
    mysql_pconnect

    E normalmente, la connessione al db viene chiusa automaticamente alla fine dell'esecuzione dello script php

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.