- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
使用 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 很棒,但我想用 PHP 实现一个高性能的 TCP 套接字服务器,因为我是一个 PHP 人:)
所以,我已经尝试过的一件事是用 PHP 实现套接字例程,使用 socket_create_listen
、socket_accept
、socket_select
等,以及PHP 中的主循环。这工作得很好,但我认为它不是很有效,因为我必须使用 socket_select
在内部调用 C 函数 select
,但是 epoll
我认为会更好(我使用的是 Linux),但是 epoll
不能用作 PHP 函数。(phpsocketdaemon 和 phpmio 是我发现的两个为您实现套接字例程的项目)。
是否可以用 nodejs 的方式来做?我正在考虑一个 PHP 模块,它在 C 中实现循环和套接字例程,并为事件调用 PHP 回调函数(onread
、onerror
..)。还是不值得付出努力?
最佳答案
我觉得这是典型的“手里只有锤子,看什么都像钉子”的情况。
正如您自己已经发现的那样,php 不是完成这项工作的正确工具。无论如何,您可能会找到一种方法来做到这一点,但它很可能会很困惑。
因此,请使用正确的工具来完成工作。您不会用锤子将螺钉拧入墙壁,对吗?
关于php - 如何在 PHP 中实现高性能异步套接字服务器应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8551819/
我是一名优秀的程序员,十分优秀!