Php 打开线程安全吗?

Php 打开线程安全吗?,php,multithreading,sockets,concurrency,Php,Multithreading,Sockets,Concurrency,我正在编写一个连接到Java服务器以获取数据的PHP站点。它通过一个插座来实现这一点。为了提高性能,我想使用它连接到服务器,这样就不必为每个请求都打开一个新的连接,而且需要花费昂贵的握手 但是我在文档中找不到的是,这个线程安全吗?如果PHP在多个线程中执行,每个线程是否都有自己的套接字?我可能会以Apache模块或FastCGI的形式运行PHP。为了节省您的时间,您可能想看看这个为PHP中的并行处理而设计的函数: 为了节省您的时间,您可能需要查看此PHP并行处理函数: 一般来说,是的。如果您使用

我正在编写一个连接到Java服务器以获取数据的PHP站点。它通过一个插座来实现这一点。为了提高性能,我想使用它连接到服务器,这样就不必为每个请求都打开一个新的连接,而且需要花费昂贵的握手


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

为了节省您的时间,您可能想看看这个为PHP中的并行处理而设计的函数:


为了节省您的时间,您可能需要查看此PHP并行处理函数:


一般来说,是的。如果您使用的是线程安全的SAPI,例如IIS,那么pfsockopen将可以安全使用

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

Apache模块mod_php仅适用于prefork MPM,即每个请求一个进程。在这种配置中,使用pfsockopen没有任何好处,因为在每次请求之后,整个过程都会被清理。 CGI同样为每个请求启动一个新的品牌流程。 FastCGI是每个请求一个进程,但能够重用进程。 PHP-FPM使用一个进程池,但对于单个HTTP请求仍然是单线程的。
一般来说,是的。如果您使用的是线程安全的SAPI,例如IIS,那么pfsockopen将可以安全使用

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

Apache模块mod_php仅适用于prefork MPM,即每个请求一个进程。在这种配置中,使用pfsockopen没有任何好处,因为在每次请求之后,整个过程都会被清理。 CGI同样为每个请求启动一个新的品牌流程。 FastCGI是每个请求一个进程,但能够重用进程。 PHP-FPM使用一个进程池,但对于单个HTTP请求仍然是单线程的。
就个人而言,我认为我应该通过编写一个单独的连接池守护程序来实现这一点,然后通过普通的fsockopen连接到该连接池。就个人而言,我认为我应该通过编写一个单独的连接池守护程序来实现这一点,然后通过普通的fsockopen连接到该连接池。链接已断开。链接已断开。