Как реализовать высокопроизводительное приложение асинхронного сервера сокетов на PHP?

С помощью 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 ..). Или это не стоит усилий?

8
задан seb 18 December 2011 в 12:51
поделиться