Buona sera.....
ecco il mio primo post!!!!
Volevo un consiglio da qualche esperto.
Ho realizzato un server in php 5, logicamente OOP, utilizzando i socket non bloccanti.
create AF_INET, SOCK_STREAM, SOL_TCP
bind
listen
select
accept
Il tempo della select (int $tv_sec , int $tv_usec) varia da 1 a 30 secondi in base a cosa si aspetta il server.
Esempio:
Server fa una domanda a client1.
Client1 deve rispondere entro 60 secondi, se non risponde entro il limite la risposta deve risultare sbagliata;
Quindi il tempo di uscita della select sarà + o - di 2 secondi, in modo che se il client non risponde il sistema non resta in attesa di dati e fa la domanda ai successivi client connessi.
Qualcuno si starà chiedendo: perchè non impostarlo a 60 secondi visto che il tempo a disposizione per rispondere è di 60 secondi?
Ovvio, mentre il server aspetta la risposta del client1 interagisce con gli altri client, quindi impostando un tempo di 60 secondi si può avere un margine di errore di 59.9 periodico
invece impostandolo a 2 scende a 1.9 periodico (abbastanza accettabile).
Quindi a volte c'è un polling ogni 2 secondi a volte ogni 60 secondi.
Il tutto scritto perfettamente e funziona molto bene senza problemi (testato con 10 utenti)!
Il server funzionerà da shell.
i miei quesiti sono questi:
Quanto è affidabile php? E le funzioni per la gestione dei socket quanto sono affidabili?
Quanti utenti riesce a mantenere un server come questo,
tenendo conto che invia a tutti gli utenti loggati una media di 20 bytes ogni 5 secondi e riceve da tutti gli utenti un media 10 bytes ogni 10 secondi?
Quanti utenti riesce a tenere non avendo problemi di banda?
Per quanto tempo mi resta bloccata l'applicazione nel momento in cui il server deve inviare a 1000 utenti 10 bytes, avendo il server una velocità di upload di 100 Kbytes/s e tralasciando quella in download dei client?
Facendo 2 calcoli abbiamo 9.766 kbytes da inviare, quindi l'applicazioni dovrebbe impiegare un decimo di secondo + il tempo per l'istruzione send + il tempo per il ciclo!
Quanto tempo ci vuole per l'esecuzione del send?
E la domanda più importante......quanto mi conviene riscrivere il server in C# utilizzando l'invio e la ricenzione di dati in modo asincrono?
Attendo tante risposte....
TNX
Peccato che php non supporta la programmazione multi-thread...