您的位置 首页 php

PHP的TS和NTS有何区别,PHP在各环境下的伪静态是如何配置的

ts(Thread-Safety)即 线程安全 ,多线程访问时,采用了加锁机制,当一个 线程 访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染php以ISAPI方式加载的时候选择这个版本.,php以ISAPI方式加载的时候选择这个版本.
nts(None-Thread Safe)即非线程安全 ,就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的是 脏数据php以fast cgi方式运行的时候选择这个版本,具有更好的性能;

I SAPI(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各环境下的伪静态是如何配置的呢,以下来详细介绍
一、Apache的伪静态配置
1、网站根目录下需要有 .htaccess 文件,没有则自己创建一个,代码如下:

 <IfModule mod_rewrite.c>
RewriteEngine on
 RewriteCond  %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule  ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
  

如果你的apache是fastcgi模式下,则需要修改为这样:

 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
替换成
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
  

这一点有些友友会经常配置错误,请多多注意!
2、在apache的配置文件 httpd .conf中查找 : LoadModule rewrite_module modules/mod_rewrite.so 将前面的#去掉,假如没有这段内容,则需要手动加上
3、在apache的配置文件httpd.conf中查找所有的 AllowOverride None,将 None 都替换成 All . 保存文件 并重启apache服务。
二、 nginx 的伪静态配置
找到nginx的配置文件 nginx.conf, 在里面的 server{ } 里增加以下内容

 location / {
   if (!-e $request_filename) {
       rewrite ^(.*)$ /index.php?s=$1 last; 
       break;
   }
}
  

重启nginx即可生效
三、IIS的伪静态配置
如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd. ini文件 ,添加下面的代码:

 RewriteRule (.*)$ /index.php?s=$1 [I]
  

在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:

 <rewrite>
<rules>
<rule name="OrgPage" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(.*)$" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" />
</rule>
</rules>
</rewrite>
  

以上是本文的全部内容,希望对大家的学习有帮助,也希望大家多多支持 php自学中心 感谢阅读!

文章来源:智云一二三科技

文章标题:PHP的TS和NTS有何区别,PHP在各环境下的伪静态是如何配置的

文章地址:https://www.zhihuclub.com/150760.shtml

关于作者: 智云科技

热门文章

网站地图