浅谈php的TS和NTS的区别
ts(Thread-Safety)即线程安全,多线程访问时,采⽤了加锁机制,当⼀个线程访问该类的某个数据时,进⾏保护,其他线程不能进⾏访问直到该线程读取完,其他线程才可使⽤。不会出现数据不⼀致或者数据污染php以ISAPI⽅式加载的时候选择这个版本.,php以ISAPI⽅式加载的时候选择这个版本.
nts(None-Thread Safe)即⾮线程安全,就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的是脏数据php 以fast cgi⽅式运⾏的时候选择这个版本,具有更好的性能;
ISAPI(Internet Server Application Programming Interface), 通常是指被http服务器所加载,以服务器的模块形式运⾏,由微软提出,故只能在win平台上运⾏,例如win下的apache,iis[据说⽤fast cgi ⽅式⼯作更稳定],⽽linux上php 则以 Apache模块或者php-fpm的⽅式运⾏。
cgi(Common Gateway Interface):HTTP服务器与你的或其它机器上的程序进⾏“交谈”的⼀种⼯具,说⽩了,cig就是⼀种后台语⾔,其可以和服务器之间进⾏通讯。此时的php是作为⼀个独⽴的程序运⾏的。特点就是耗费内存。
fast cgi.是⼀个常驻(long-live)型的CGI,它可以⼀直执⾏着,只要激活后,不会每次都要花费时间去fork.这种⽅式是与语⾔⽆关的、可伸缩架构的CGI开放扩展,其主要⾏为是将CGI解释器进程保持在内存中并因此获得较⾼的性能。
ISAPI执⾏⽅式是以DLL动态库的形式使⽤,可以在被⽤户请求后执⾏,在处理完⼀个⽤户请求后不会马上消失,所以需要进⾏线程安全检查,这样来提⾼程序的执⾏效率,所以如果是以ISAPI来执⾏PHP,建议选择ThreadSafe版本。
⽽FastCGI执⾏⽅式是以单⼀线程来执⾏操作,所以不需要进⾏线程的安全检查,除去线程安全检查的防护反⽽可以提⾼执⾏效率,所以,如果是以FastCGI来执⾏PHP,建议选择NonThread Safe版本。
通过phpinfo(); 查看其中的 Thread Safety 项,这个项⽬就是查看是否是线程安全,如果是:enabled,⼀般来说应该是ts版,否则是nts版。
以上所述是⼩编给⼤家php的TS和NTS的区别,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!php支持多线程吗
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论