首页 » 漏洞 » 关于PHP的线程安全模式(Thread Safety)

关于PHP的线程安全模式(Thread Safety)

 
PHP自身是不支持线程的,但是它在安装的时候,涉及到一个线程安全的问题,Windows下提供了二种安装包,Linux下编译安装提供了–enable-maintainer-zts这个选项。
 
很多人一看到“安全”,就以为是好事,其实不然。
 
既然PHP没有线程,那么这个线程安全指的是什么呢?这和它的运行方式有关。
 
这里仅对Linux系统下流行的两种PHP运行方式(LNMP和LNAMP)来讲一下。
 
如果是LNMP环境,也就是说PHP以php-fpm方式运行,那么就不涉及到线程安全这个问题了,因为php-fpm是以多进程的方式来运行的。
 
如果是以LNAMP或者LAMP方式运行(mod_php),那么应该先了解下Apache的MPM,简单点说,Apache支持以多线程的方式运行(Worker),也支持以多进程的方式运行(Prefork)。一般来讲,Linux下的Apache绝大多数都是运行在Prefork模式下,这是出于稳定性的考虑。
 
所以总结下,LNMP下不需线程安全,Apache下为了稳定性的考虑,建议以多进程的方式运行(Prefork),这样也是不需要线程安全的。
 
最后一点,PHP安装为线程安全,会比非线程安全多占用一些CPU,并且可能会增加bug或者不稳定的问题,这才是重点,不然PHP就没必要设置这个选项了。

 

原文链接:关于PHP的线程安全模式(Thread Safety),转载请注明来源!

0