С помощью nodejs очень легко создать неблокирующий TCP-сервер. Пример из nodejs.org:
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 обрабатывает вещи select () - / poll () - / epoll () для вас, процедуры сокетов и основной цикл реализованы в C, так что это очень быстро и эффективно.
nodejs - это здорово, но я бы хотел реализовать высокопроизводительный сокет-сервер TCP на PHP, потому что я парень по PHP:)
Итак, одна вещь, которую я уже попробовал, это реализовать подпрограммы сокетов в PHP с socket_create_listen
, socket_accept
, socket_select
и т. Д. И основным циклом в PHP. Это работает очень хорошо, но я не думаю, что это очень эффективно, потому что я должен использовать socket_select
, который вызывает C-функцию select
внутри, но я думаю, что epoll
будет лучше (я использую Linux) , но epoll
недоступно как функция PHP.
( phpsocketdaemon и phpmio - это 2 проекта, которые я обнаружил, которые реализуют процедуры для сокетов для вас).
Можно ли сделать это способом nodejs? Я имею в виду модуль PHP, который реализует процедуры цикла и сокета в C и вызывает функции обратного вызова PHP для событий (onread
, onerror
..). Или это не стоит усилий?