来自 PHP.net:
http://www.php.net/manual/en/function.pfsockopen.php
我明白这个函数完成的要点,但我仍然不清楚这是否会完成我想要的。这是我的场景:
我有一个由许多用户同时使用的大型 PHP 应用程序。在应用程序中,我正在打开一个到远程服务器的 TCP 套接字以记录消息等...我希望我可以利用 pfsockopen 来减少需要打开的连接。例如,用户 1 登录 - 套接字打开。 User2登录后,没有打开socket,因为他可以“搭便车”到user1打开的socket上。
这可能吗?
最佳答案
pfsockopen
确实会在脚本结束时保持套接字打开,允许它从一个请求到另一个请求重新使用,有效地打开更少的连接,就像你期望的那样。但是,这并不与所有 SAPI 兼容。
持久性发生在每个进程的基础上。因此,在 CLI SAPI 中运行的 pfsockopen
将在每次执行时关闭并重新打开套接字,因为 CLI 脚本是在启动、打开套接字和结束(关闭套接字)的单个进程中执行的以及过程)。
在每个脚本一个进程的 CGI 模式下,也是如此。
对于 Apache SAPI,这取决于所使用的多处理模块 (MPM) 类型。 mpm-prefork
在每次请求时生成一个新进程,因此它很可能不支持它。 mpm-worker
然而,生成线程,所以它可能会在那里工作。 mpm-winnt
是多线程 MPM 的 Windows 变体,因此它也应该可以工作。
可能发生的最坏情况是调用将作为正常的 fsockopen
调用执行。
关于PHP - 有人可以为我解释 pfsockopen 函数吗? (持久套接字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8099248/