Con nodejs, è molto facile creare un server TCP non bloccante. Esempio da nodejs.org:Come implementare un'applicazione server socket asincrono ad alte prestazioni in PHP?
var net = require('net');
var server = net.createServer(function (socket) {
socket.write("Echo server\r\n");
socket.pipe(socket);
});
server.listen(1337, "127.0.0.1")
nodejs gestisce la select() -/poll() -/epoll() roba per te, le routine di socket e il ciclo principale sono implementate in C, quindi è molto veloce e efficiente.
nodejs è grande, ma mi piacerebbe implementare un server socket TCP ad alte prestazioni in PHP, perché io sono un ragazzo PHP :)
Quindi, una cosa che già provato è quello di implementare le routine di socket in PHP, con socket_create_listen
, socket_accept
, socket_select
ecc. e il ciclo principale in PHP. Funziona molto bene, ma non penso che sia molto efficiente, perché devo usare socket_select
che chiama internamente la funzione C select
, ma epoll
sarebbe meglio penso (sto usando Linux), ma epoll
non è disponibile come funzione PHP. (phpsocketdaemon e phpmio sono 2 progetti che ho trovato che implementano le routine socket per voi).
Sarebbe possibile farlo in modo nodojs? Sto pensando a un modulo PHP che implementa le routine loop e socket in C e chiama le funzioni di callback PHP per gli eventi (onread
, onerror
..). O non ne vale la pena?
/server socket TCP ad alte prestazioni in PHP/sembra un ossimoro se mai ne ho visto uno. –
Come molti fan di PHP come me, non è stato progettato per questo tipo di utilizzo. Potresti essere in grado di implementare un server al suo interno, ma direi che farlo in maniera efficiente sarebbe una vera impresa. A meno che PHP non subisca alcune modifiche architettoniche importanti per consentire questo tipo di utilizzo, consiglierei di utilizzare qualcosa di più adatto all'attività. – GordonM