来自PHP.net:
http://www.php.net/manual/en/function.pfsockopen.php
我理解这个功能完成的要点,但是我还不清楚这是否能达到我想要的目的。这是我的情景:
我有一个大型PHP应用程序,许多用户同时使用它。在应用程序中,我打开一个TCP套接字到远程服务器以记录消息等...我希望我能够利用pfsockopen以便需要打开更少的连接。例如,user1登录 - 套接字打开。 User2登录,没有打开套接字,因为他可以“捎带”在user1打开的套接字上。
这可能吗?
答案 0 :(得分:11)
pfsockopen
确实会保持套接字打开,允许它从请求重新使用到另一个请求,有效地打开更少的连接,就像你期望的那样。但是,这与所有SAPI不兼容。
持久性基于每个进程发生。因此,pfsockopen
在CLI中运行SAPI将在每次执行时关闭并重新打开套接字,因为CLI脚本在单个进程中执行,该进程启动,打开套接字并结束(关闭套接字以及处理)。
在CGI模式下,每个脚本只有一个进程,这也是如此。
使用Apache SAPI,它取决于使用何种类型的多处理模块(MPM)。 mpm-prefork
会在每次请求时生成一个新进程,因此很可能不支持它。但是,mpm-worker
会生成线程,所以它可能会在那里工作。 mpm-winnt
是多线程MPM的Windows变体,因此它也应该起作用。
最糟糕的情况是,呼叫将以正常的fsockopen
呼叫执行。