Utenti online

Ho questi 2 codici, vorrei aggiungerci quello che segnala quanti utenti sono connessi al mio sito

$ip=$_SERVER['REMOTE_ADDR'];//Prendiamo il numero IP del visitatore

$refe=$_SERVER['HTTP_REFERER'];//Chiediamo da quale sito proviene il visitatore

inviato 10 anni fa
php
php
6
X 0 X

non è una cosa che si può fare con poche righe. Generalmente bisogna usare una tabella di un DB nella quale memorizzare gli accessi di ogni utente. Da questa tabella, selezionando gli accessi avvenuti negli ultimi 15 minuti (è un esempio) è possibile dire quanti utenti sono PRESUMIBILMENTE online.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Per principio non uso un DB, lo considero un'accessorio che "succhia" risorse e che poi non è semplice usarlo, me la cavo sempre con un file.txt, vedo che è "infinito" come capienza.

Io sul primo sito ho un contavisite completo (Special Stat) che dice anche da quale città proviene il visitatore, però devo appoggiarmi a Special Stat e magari mi spia, vorrei essere indipendente

risposto 10 anni fa
php
php
6
modificato 10 anni fa
X 0 X

Fidati php, la tua opinione è sicuramente dettata dalla poca esperienza. Se avrai la possibilità e la voglia di studiare il PHP vedrai che le cose non stanno così.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Fidati php, la tua opinione è sicuramente dettata dalla poca esperienza. Se avrai la possibilità e la voglia di studiare il PHP vedrai che le cose non stanno così.

 :bye:

Mi fido, considera però che il mio sito rimarrà quello che è, qualche visitatore, qualche email, ecc.

risposto 10 anni fa
php
php
6
X 0 X

Certo, è importante adottare soluzioni adeguate al problema da risolvere ma non spaventarti difronte alle difficoltà.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Beh si può usare anche il file di testo come database.

Devi studiarti per benino le sessioni, la funzione serialize e unserialize di php (non indispensabili ma comode) e le funzioni di lettura file (fopen).

Ti dico cosa dovrebbe succedere in teoria, perché in pratica ora ho poco tempo per scrivere un codice funzionante :-)

avvii una sessione, per cui tutte le pagine che visiterà quell'utente avranno lo stesso id.

Puoi associare un nome randomico ad ogni sessione (o usare proprio l'id di sessione) e segni il tempo in cui l'utente ha elaborato la pagina. Questi due dati li salvi in un array, lo serializzi e salvi la stringa nel file.

Quando un altro utente si collega, prendi la stringa nel file, la unserializzi e aggiungi all'array i suoi dati, fai un controllo sul tempo dei precedenti utenti: se il loro ultimo aggiornamento risale a 10 o 15 minuti prima, levi il loro dato dall'Array, poi conti la lunghezza dell'Array e la stampi come numero di utenti online, riserializzi l'array, salvi la stringa sul file di testo e hai il tuo sistema di conteggio utenti online :)

risposto 10 anni fa
chumkiu
X 0 X

l'utilizzo di file per la memorizzazione di informazioni "dinamiche" è pericoloso se questo file può essere aperto da processi o thread concorrenti. C'è il rischio di perdere i dati in esso conservati.

Quindi o si usano tecniche di lock oppure il file va bene con siti a basso carico di utenti.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Beh mi sembrava che fosse questo il caso :)

In ogni caso con flock sei apposto!

risposto 10 anni fa
chumkiu
X 0 X
In ogni caso con flock sei apposto!

non ne sarei così sicuro...

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Perché mai? con flock mette in attesa lo script contemporaneo che deve utilizzarlo.

risposto 10 anni fa
chumkiu
X 0 X

Se leggi la documentazione ufficiale su flock vedrai che ci sono diversi casi in cui questa istruzione non riesce ad effettuare il lock del file.

Ma i problemi non finiscono qui perché flock non garantisce una gestione corretta delle "race conditions". Se leggi tutti i commenti presenti sempre nella documentazione ufficiale vedrai che ci sono casi che portano comunque alla corruzione del contenuto del file, anche quando flock ha correttamente bloccato un script in attesa che il file si sblocchi. Una soluzione proposta è quella di creare un ulteriore file ed usare questo come semaforo, attraverso flock. Questo file non conterrà informazioni ma servirà solo a fermare gli script.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

secondo me succhia piü risorse lavorare con i file di testo che con il database, senza dire che non puoi interrogare i file come fai al server del database ... per estrarre una minima cosa da file di testo devi parsarlo tutto e poi cercare corrispondenze con regex e altro ...

ot : stupida tastiera tedesca löl caßo fa veramente pena ha la Y sulla riga in basso e la Z su quella in alto QWERTZUIOPÜ*ASDFGHJKLöä#<YXCVBNM;:_

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda