Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144

    [Gestore sessioni] Problema con il Garbage Collector

    Ciao!

    Non riesco a risolvere un problema con il garbage collector del gestore di sessioni... In pratica non elimina il record scaduto dalla tabella sessioni del database.
    Mi potete dare qualche consiglio per risolvere questo problema?

    Questo è il codice:
    Codice PHP:
    function gc($maxlife){
    include 
    'conn.php';
    $query mysql_query("SELECT id,time FROM sessioni");
    while(
    $fetch mysql_fetch_array($query)){
    $timeDB $fetch['time'];
    $id $fetch['id'];
    $sesstime time()-$timeDB;
    if(
    $sesstime $maxlife){
    $query mysql_query("DELETE FROM sessioni WHERE id='$id'");
    }}
    return 
    true;

    Poi ho pure impostato l'.htaccess su altervista...
    Ecco le configurazioni dell'htaccess:
    """
    php_value session.gc_maxlifetime 60
    php_value session.gc_probability 100

    php_flag session.use_cookies 1
    php_flag session.use_only_cookies 1
    php_value session.save_handler user
    """

  2. #2
    La sintassi SQL non è per esempio

    codice:
    DELETE campo1,campo2,* FROM tabella WHERE id = 0

    ?

  3. #3
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    function gc($maxlife){
        include 
    'conn.php';
        
    mysql_query("delete * from sessioni where time+$maxlife < ".time());
        } 
    senza troppi sbattimenti


    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    Ah grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    Però non funziona ancora

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da W3bm@st3r
    Però non funziona ancora

    un pò come dire al cuoco 'non è buono'....

    cosa non funziona esattamente?


    prova a fare questo...

    Codice PHP:
    function gc($maxlife){
        include 
    'conn.php';
        
    $query="delete * from sessioni where time+$maxlife < ".time();
        
    mysql_query("delete * from sessioni where time+$maxlife < ".time()) or die(mysql_error());
        } 
    e vedi cosa ti dà
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    Originariamente inviato da dottwatson
    un pò come dire al cuoco 'non è buono'....
    Scusa...

    Originariamente inviato da dottwatson
    cosa non funziona esattamente?
    In pratica ho impostato (nell'htaccess su altervista) il "php_value session.gc_maxlifetime" a 60 secondi e il "php_value session.gc_probability" a 100. Però dopo questi 60 secondi riavvio la pagina (che contiene questo codice:
    frammento di amministrazione.php
    Codice PHP:
    <?
    include_once 'conn.php';
    include 
    'sessioni.php';
    session_start();
    $idS session_id();
    $qu = @mysql_query("SELECT privilegio FROM utenti INNER JOIN registroUtenti ON utenti.id=registroUtenti.idUtente WHERE idSessione='$idS'");
    $f mysql_fetch_array($qu);
    $p $f['privilegio'];
    if(
    $_SESSION['authorized'] and $p==0){
    ?>
    ...) e non si eliminano i record scaduti nella tabella "sessioni" del db.

    Originariamente inviato da dottwatson
    prova a fare questo...

    Codice PHP:
    function gc($maxlife){
        include 
    'conn.php';
        
    $query="delete * from sessioni where time+$maxlife < ".time();
        
    mysql_query("delete * from sessioni where time+$maxlife < ".time()) or die(mysql_error());
        } 
    e vedi cosa ti dà
    Io ho provato il codice che mi hai postato su un documento a parte e va.. Mentre nel gestore non va, come se non riuscisse a partire in automatico...
    Io ho pensato che questo problema derivi dal fatto che non prenda la configurazione dell'htaccess... ossia che rimanga il valore di default 1440 secondi. Cmq ora provo ad aspettare qui 24 minuti, poi riavvio la pagina in modo da far caricare il gestore e vedo se quel record si elimina... Però se è rimasta invariata pure la probabilità dovrei aspettare 100 volte 24 minuti per vedere se funziona


    Cmq grazie mille per la disponibilità.

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    da htaccess è possibile variare certi valori solo se nel php.ini la direttiva safe_mode = Off.

    il safe_mode non fa altro che negare agli utenti la possibilità di settare delle configurazioni runtime(via codice o htaccess appunto) per poter garantire all' amministratore del server che certi utenti smaliziati possano impostare valori non coerenti con le impostazioni del server.

    se per esempio ho il safe_mode=On posso :

    cambiare il tempo di esecuzione di uno script
    cambiare la memoria max assegnabile all' esecuzione di uno script
    cambiare il limite di upload di un file da form


    ecc.. ecc.. ecc...

    fatti un bel file
    Codice PHP:
    phpinfo(); 
    e guarda la tabella:

    alla tua dx ci sono 2 colonne: la prima sono le impostazioni date dall server, l' altra invece sono le impostazioni che hai tu in quell momento.
    In questo modo vedi pure se le direttive che hai dato tramite il tuo htaccess sono state prese e valutate

    vado a magnà!

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    Ok, fatto... Non ha cambiato niente l'htaccess

    Quindi dovrei comprare uno spazio per poter modificare i valori del gc come voglio io?

  10. #10
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    nella fattispecie..

    si
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.