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各环境下的伪静态是如何配置的呢 , 以下来详细介绍一、Apache的伪静态配置
1、网站根目录下需要有 .htaccess 文件 , 没有则自己创建一个 , 代码如下:
<IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ 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文件 , 添加下面的代码:
【PHP的TS和NTS有何区别,PHP在各环境下的伪静态是如何配置的】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导出百万条数据方法
- 给普洱新手的10个小建议
- 用 Python 生成有“灵魂”的二维码
- List,Set.Map Java中的集合类
- Java 编程语言中很少被人了解的特性-statement label
- Java中使用随机数的正确姿势是什么?
- 使用Java API管理数据
- 电水壶里面的水垢怎么处理 电水壶里的水垢用什么能给它整下来
- 作为程序员,HTTP缓存这一块还是需要了解一下的
- 透明色散粉适合什么皮肤 透明散粉和自然色散粉哪个好