Newsgroup: it.comp.www.php
Titolo: questione sugli host.

Ciao a tutti,
chi mi può dire se esiste una funzione che, dato un HOST in input,
restituisca true (o false) a secondo se quell'HOST è ancora (o meno)
connesso al server?
In caso affermativo qual'è la funzione? Qualora non ci sia, in che modo è
possibile ottenere tale comportamento? (*)
Nell'attesa, ringrazio anticipatamente.
Cooper.
(*) Senza utilizzare sessioni o cookie.
-- 
BlueWare Web Agency
   [web] 
http://www.blueware.it
   [icq] 146781935

 connesso al server?
Che server? HTTP? Non certo in PHP, devi lavorare a livello protocollo,
se utilizzi Apache cerca tra i vari moduli ce ne sara' probabilmente
uno che fornisce questo tipo di informazioni.
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

connesso al server?
Ho idea che tu stia cercando la cosa sbagliata.
Se io vado su 
NASA.COM
, per dire, e passo 35 minuti a leggere la home
page, la connessione in realta' e' durata forse 5-6 secondi, quel che
ci ha messo il browser per accattarsi la pagina da mostrarmi poi. Per
cui la "connessione" e' durata dalle 00:00:00 alle 00:00:06.
A te interessa sapere se alle 00:31:14 io sono ancora a leggermi quel
benedetto articolo, oppure vuoi controllare se *IN QUELL'ISTANTE* sto
scaricando la pagina?
Leonardo
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio


Mi interessa sapere se alle 00:31:14 sto ancora a leggere quell'articolo.
Cooper.


Cooper.
Fai una funzione javascript nella pagina dell'articolo che ogni tot
secondi/minuti segnala al server che stai ancora leggendo
quell'articolo. Per esempio potresti ricaricare un'immagine facendo
puntare il suo src ad uno script sul server, generalizzando potresti
passare come parametri un identificativo dell'articolo in questione e
la data/ora se devi fare un log di qualche tipo.
'bye


A una soluzione di questo tipo ci avevo già pensato, il problema è che non
posso farla perchè se da un lato funziona dall'altro se l'utente ha il
supporto javascript disabilitato.... non so se mi spiego?
Pensavo a una soluzione che coinvolgesse esclusivamente php e il webserver
(quindi il tutto gestito dal remoto).


Mi interessa sapere se alle 00:31:14 sto ancora a leggere quell'articolo.
La versione breve e' che non si puo' fare in modo affidabile.
Alle 00:31:14, la comunicazione con il server o si e' conclusa o non si e'
conclusa.
Se non si e' conclusa, cioe' se stai ancora a scaricare qualcosa (per es.,
una GIF a 1 byte al secondo), nove su dieci il browser va in timeout. Sono
supportati trucchetti plausibili (ottimo il multipart-mixed-replace), solo
che non tutti i browser li supportano. In particolare, IE non lo fa.
Questo tipo di comportamento lo puoi aggirare solo aggiungendo al browser,
che non ce l'ha, la capacita' di gestire connessioni prolungate. Ma questo
lo devi fare in Java, Flash, o sarcazzi (versione 3.8+), e l'utente non e'
detto che ce l'abbia abilitati o te lo voglia lasciar fare.
Sicche' ti rimane l'ipotesi di ripetere il collegamento.
Per esempio potresti pensare di mettere una GIF di 1x1 pixel, che punta ad
un file PHP che invia un "Location: $PHP_SELF/$USERID/$RANDOM.gif", sempre
e comunque. Su alcuni browser (di nuovo, IE) cio' produce un ticchettio di
estrema noiosita' e il lampeggiare delle icone "connessione in corso", che
l'utente non ama gran che (in genere pensano di essere hackerati).
Altri browser ignorano la cosa e non ti fanno funzionare il trucco. Altri,
infine, gestiscono male il location stack e alle 00:07:19 l'utente si vede
il computer bloccato o un errore "Location Loop?". Su altri browser, parte
il funzionamento del tasto BACK.
Potresti tentare con un IFRAME... se il browser supporta gli IFRAME. E se,
beninteso, non c'e' qualche popup washer con il grilletto facile.
Problemi simili ce l'ha il javascript.
Alla fin fine, tutto quel che puoi fare e' IPOTIZZARE che tutti quelli che
hanno scaricato la pagina da meno di 5 minuti la stiano ancora leggendo.
Oppure cercare di capire cosa sa fare il browser, e predisporre uno o piu'
trucchi che ti dicano cosa fa QUELL'utente. Cosi' magari hai in un un dato
istante 10 browser attivi:
	4 Explorer che supportano OnUnload e Javascript -> precisione 95%
	2 Explorer che supportano OnUnload -> precisione 80%
	1 Safari che supporta le "GIF lente" -> precisione 100%
	2 Opera che non supportano niente -> fai una stima statistica
	1 Netscape che supporta il MXMR -> precisione 100%
Dopo 15 minuti sai con certezza quasi totale cosa fa il 60% di quelli e di
un altro 20% hai una ottima stima. Usi queste cifre per stimare cosa fanno
quei 2 browser di cui non puoi dire niente. Se per es. il 50% degli altri,
dopo 15 minuti, se n'e' ito, tu supponi che uno di quei due abbia fatto lo
stesso.
E poi nel mix introduci le incognite dovute all'utilizzo di proxy.
Questi sono i problemi reali, effettivi, dati dai protocolli e dalle varie
limitazioni.
Poi ci sono vari prodotti che millantano di poterti dire di tutto ed anche
di piu', e ti domandi: "Come fanno?". Be', a farlo, fanno come detto sopra
(i sistemi son quelli); a millantare precisione assoluta... basta mentire:
e' facile e veloce, ed e' quasi certo che nessuno avra' a che ridire.
