使用nodejs,創建非阻塞TCP服務器非常簡單。從nodejs.org例如:如何在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的select() - /輪詢() -/epoll的()的東西給你,插座程序和主循環用C實現的,所以它的速度非常快,高效。
是的NodeJS偉大的,但我想在PHP中實現高性能TCP套接字服務器,因爲我是一個PHP的傢伙:)
所以,有一件事我已經嘗試過,是落實socket例程在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
..)。或者是不值得的努力?
/PHP中的高性能TCP套接字服務器/看起來像一個矛盾修飾,如果我看到過。 –
儘管我是一位PHP粉絲,但實際上並不是爲這種用法而設計的。你可能可以在其中實現一個服務器,但我認爲以有效的方式進行這將是一個真正的壯舉。除非PHP經歷了一些重大的體系結構更改才允許使用此類用途,否則我會推薦使用更適合該任務的更適合的東西。 – GordonM