pfsockopen线程安全吗?

时间:2010-10-05 20:56:55

标签: php multithreading sockets concurrency

我正在编写一个连接到Java服务器以获取数据的PHP站点。它通过套接字完成此操作。为了提高性能,我想使用pfsockopen()连接到服务器,因此不必为每个请求打开新连接(带有昂贵的握手)。

我在文档中找不到的,这个线程是否安全?如果PHP在多个线程中执行,每个线程是否都有自己的套接字?我可能会将PHP作为Apache模块或FastCGI运行。

2 个答案:

答案 0 :(得分:0)

通常,是的。如果您使用的是线程安全的SAPI(例如IIS),则pfsockopen将可以安全使用。

话虽如此,PHP实际上很少是线程化的。

  • Apache模块mod_php仅适用于prefork MPM,即每个请求一个进程。在这种配置下,使用pfsockopen没有任何好处,因为在每次请求之后都会清理整个过程。
  • CGI同样为每个请求启动一个新的品牌流程。
  • FastCGI是每个请求一个进程,但是能够重用这些进程。
  • PHP-FPM使用进程池,但是相对于单个HTTP请求而言仍是单线程的。

答案 1 :(得分:-2)

为了节省您一些时间,您可能希望查看在PHP中为并行处理而创建的此函数:

http://phplens.com/phpeverywhere/?q=node/view/254