PHP版本选择:TS和NTS比较

在PHP 开发和生产环境搭建过程中,需要安装PHP语言解析器。官方提供了2种类型的版本,线程安全(TS)版和非线程安全(NTS)版,有时后我们开发环境和实际生产的环境有所不同,因此也需要选择安装对应的PHP版本。

名词解释

  • TS:Thread Safe 线程安全, 多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时进行数据加锁保护,其他线程不能同时进行访问该数据,直到该线程读取完毕,其他线程才可访问使用该数据,好处是不会出现数据不一致或者数据污染的情况,但耗费的时间要比 NTS 长。

  • NTS:Non Thread Safe 非线程安全, 不提供数据访问保护,有可能出现多个线程先后或同时操作同一数据的情况,容易造成数据错乱(即脏数据),一般操作的执行时间要比 TS 短。

PHP主要运行方式

PHP的两种主要运行方式:ISAPI和FastCGI。

ISAPI

ISAPI(Internet Server Application Programming Interface)以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择ThreadSafe版本。

FastCGI

FastCGI是一个常驻(long-live)型的CGI,以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择NonThread Safe版本。

选择

通常win下 PHP + Apache 组合,以 ISAPI 的方式运行,而linux下通常分为2种:

  • Apache + PHP,PHP一般作为Apache的模块进行运行;
  • Nginx + PHP ,以FastCGI的方式,即php-fpm的方式运行,该方式对高并发、高负载有良好的性能体现,因此很多网站采用该方式进行环境的搭建。

总结:

  • 以 ISAPI 方式运行就用 TS 线程安全版;
  • 以 FAST-CGI 或 PHP-FPM 方式运行就用NTS 非线程安全版;
  • 通常Linux 下 Apache + PHP 选TS,Nginx + PHP 选TNS;
有用就打赏一下作者吧!