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

    Visualizzare tutte le sessioni attive

    ciao!

    vorrei visualizzare le varie sessioni attive sul server usando php.
    ho provato banalmente così:
    Codice PHP:
    session_start();
    $path session_save_path();
    var_dump($path);
    echo 
    '<br>';
    var_dump(scandir($path)); 

    ottengo questo:
    codice:
    string(21) "/var/lib/php/sessions" 
    bool(false)

    suppongo che il problema possa essere i permessi di lettura sulla directory /var/lib/php/sessions.
    come potrei fare??

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Si, probabilmente se scandir ti ritorna un false c'è stato un errore di lettura.

    Però quello che ricevi da questo comando è solo la lista dei file di sessione, per avere più informazioni dovresti scriverti un session handler o magari implementarne uno già pronto.

  3. #3
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Si, probabilmente se scandir ti ritorna un false c'è stato un errore di lettura.

    Però quello che ricevi da questo comando è solo la lista dei file di sessione, per avere più informazioni dovresti scriverti un session handler o magari implementarne uno già pronto.
    bhe potevo andarmi a leggere i vari file, e farne il parsing.
    cosi avevo tutte le info!

    viceversa, seguo la strada di un session handler.
    sto guardando un pò in giro.
    php già offre la classe SessionHandler con un metodo read.
    che però richiede l'id di sessione.
    quindi dovrei in qualche modo andare a prendere tutti gli id di sessione e starei da capo.

    sennò, mi pare di capire di dover usare il db per salvare le sessioni.
    al momento del login, salvo le info.
    al momento del logout cancello il record (o uso un flag online/offline se mi voglio tenere le sessioni vecchie).
    corretto??

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Si con un session handler devi salvarti le sessioni da qualche parte, puoi tranquillamente usare mysql se il sito è con poco traffico, altrimenti ti consiglio di utilizzare redis che è decisamente più veloce a gestire molte query (inoltre può essere un buon bagaglio di conoscenze se lavori nel settore).

    Credo che in entrambi i casi ci siano già librerie pronte da utilizzare, anche se non mi vengono in mente. Puoi controllare su packagist.org così magari ti eviti di scrivere un bel po' di codice.

  5. #5
    bhe potrebbe essere un ottimo suggerimento in effett!

    leggendo qui, ho visto che c'è anche un esempio su come fare quello che vorrei: https://github.com/phpredis/phpredis
    inoltre su debian ho visto che ci stanno già i pacchetti:
    codice:
    p   php-redis                                                                            - estensione PHP per interfacciarsi con Redis                                                    
    v   php7.0-redis
    potrebbe essere un buon test da fare!

  6. #6
    allora, ho installato il pacchettp php-redis e il server redis.
    poi ho modificato il php.ini:
    Codice PHP:
    session.save_handler redis
    session
    .save_path "tcp://localhost:6379?weight=1&read_timeout=2.5" 
    riavviato il server, e lanciato questo script da due browser:
    Codice PHP:
    session_start();
    var_dump(session_save_path());
    $_SESSION['nome'] = 'Mattepuffo';
    $_SESSION['url'] = 'www.mattepuffo.com'
    bene, sono andato a vedere le KEYS:
    codice:
    KEYS *
    1) "PHPREDIS_SESSION:o3sg0ll0kcn8v7mq0ts7rgbto5"
    2) "PHPREDIS_SESSION:rme3optac1l1789qeo99qae2j7"
    quindi memorizza gli id di sessione.
    e tra l'altro le sessioni vengono anche cancellate in automatico scaduto il tempo impostato nel php.ini.

    l'unico problema, è che non saprei bene che farci cmq

  7. #7
    ok come non detto, interrogavo male il db:

    codice:
    GET PHPREDIS_SESSION:o3sg0ll0kcn8v7mq0ts7rgbto5
    "nome|s:10:\"Mattepuffo\";url|s:18:\"www.mattepuffo.com\";"

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 © 2024 vBulletin Solutions, Inc. All rights reserved.