No guarda, con IO::Select è molto semplice. Ti spego anche come.
questo che segue è un esempio preso dalla guida:
codice:
use IO::Select;
use IO::Socket;
$lsn = new IO::Socket::INET(Listen => 1, LocalPort => 8080);
$sel = new IO::Select( $lsn );
while(@ready = $sel->can_read) {
foreach $fh (@ready) {
if($fh == $lsn) {
# Create a new socket
$new = $lsn->accept;
$sel->add($new);
}
else {
# Process socket
# Maybe we have finished with the socket
$sel->remove($fh);
$fh->close;
}
}
}
In poche parole, se richiedono una nuova connessione, l'oggetto rilasciato da can_read è uguale a quella creata per lo sock del server. Se è differente è un client che si era precedentemente connesso e quindi risolvo le sue richieste.
Non è così semplice gestire più connessioni, però il meccanismo è quello.
In questo modo se non ricevi nulla, non usi neanche risorse inutilmente.
IO::Select mi ha salvato veramente la vita.
Altrimenti a quest'ora serei ancora a forkare per ogni connessione nuova che ricevevo, e non è bello vedere la RAM che diminuisce piano piano (veloce veloce).
Stacco perchè ho molto sonno.
Ciao! ^^