我正在使用PHP sockets扩展(基本上是围绕
我打开的所有套接字都是到同一IP的,这使得像
问题是:如果我故意保持打开的套接字仍然处于服务状态(我不调用
最终我想做的是避免在每个请求上进行TCP握手。
附加信息:
- 我使用Apache工作进程MPM,这意味着不同的请求可以但不一定从不同的进程中提供服务。为了简单起见,让我们假设所有请求都来自同一个进程。 - 我可以获取PHP中已打开和已连接套接字的文件描述符ID。我可以打开、读取和写入
socket(2)
相关的linux系统调用的包装器),并希望在处理一个请求时打开的套接字可以在随后的请求中重复使用。性能是一个关键因素。我打开的所有套接字都是到同一IP的,这使得像
pfsockopen()
这样的其他函数的使用变得不可能(因为它每次都会重复使用同一个单独的套接字),而我需要同时使用多个套接字。问题是:如果我故意保持打开的套接字仍然处于服务状态(我不调用
socket_close()
或socket_shutdown()
),并连接具有相同参数的套接字到同一IP以服务下一个请求,那么Linux是否会重复使用之前打开的套接字/文件描述符?最终我想做的是避免在每个请求上进行TCP握手。
附加信息:
- 我使用Apache工作进程MPM,这意味着不同的请求可以但不一定从不同的进程中提供服务。为了简单起见,让我们假设所有请求都来自同一个进程。 - 我可以获取PHP中已打开和已连接套接字的文件描述符ID。我可以打开、读取和写入
/dev/fd/{$id}
,但是没有任何作用 - 它不与远程服务器通信(也许这是一种天真的方法)。如果有人知道如何使其工作,我会考虑将其视为可以接受的答案。