蒙国造博客

PHP Non Thread Safe和Thread Safe区别

None Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查。

Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程,耗尽系统资源。

 

再看看这两者的选择。

为了与外部交换数据,PHP提供了一种叫SAPI的接口。

SAPI是一个中间过程,提供了一个和外部通信的接口,有点类似于socket。

SAPI使得PHP可以和其他应用进行交互数据(如Apache、Nginx等)。

PHP默认提供了很多种SAPI,常见的提供给Apache、Nginx、IIS6/7的FastCGI,单独给IIS的ISAPI,以及Shell的CLI

CGI、FastCGI和PHP-FPM关系图解

 

FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率。

而线程安全检查是为ISAPI方式的PHP准备的,也就是为IIS准备的,因为有许多php模块都不是线程安全的,所以需要使用Thread Safe的PHP。

所以,如果是以 FastCGI 执行 PHP ,都建议用Non Thread Safe的 PHP (zip安装包)。

 

参考资料:

  1. php5 non-thread-safe和thread-safe这两个版本的区别
退出移动版