php5 NTS和TS版本的区别,所谓的线程安全和非安全

php5 non-thread-safe和thread-safe这两个版本的区别

从PHP5.2.10版本开始(现在有PHP5.2.10和5.3两个版本),有None-Thread Safe与Thread Safe两种版本的可供选择,这两种版本有何不同,作为使用者来说又应该如何选择呢?下面聚友将为您讲述。
先从字面意思上理解,None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查;Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源。

再来看PHP的两种执行方式:ISAPI和FastCGI。FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI(无论搭配 IIS 6 或 IIS 7)执行 PHP ,都建议下载、执行 non-thread safe 的 PHP (PHP 的二進位檔有兩種包裝方式:msi 、zip ,請下載 zip 套件)。而线程安全检查正是为ISAPI方式的PHP准备的,因为有许多php模块都不是线程安全的,所以需要使用Thread Safe的PHP。

最近在64位系统上编译php上用–with-libdir=lib64

以前没注意到的,现在可以看下哦

./configure –prefix=/usr/local/php5 –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr –with-libdir=lib64

看到几篇文章,地址如下

http://www.07net01.com/linux/64weixitongxiabianyiPHPzhaobudaokuwenjianwenti_7518_1343998855.html

http://www.php-oa.com/2008/03/28/php-make.html

windows2003安装 php5.3 fcgi 模式 加载 zend guard loader 5.5

apache 2.2 就不说了

php 5.3.14 下载 要用nts 版本 VC9 x86 Non Thread Safe

http://windows.php.net/downloads/releases/php-5.3.14-nts-Win32-VC9-x86.zip

下载 apache mod_fcgi 到这 http://www.apachelounge.com/download/  现在 apache 2.2 版本的mod_fcgi 哦

下面是个例子  具体文档要参考 http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

LoadModule fcgid_module modules/mod_fcgid.so
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi .php
FcgidInitialEnv PHPRC "D:\APMServ5.2.6\PHP5.3"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
FcgidMaxRequestsPerProcess 1000
FcgidMaxProcesses 5
FcgidIOTimeout 120
FcgidIdleTimeout 120
FcgidWrapper "D:\APMServ5.2.6\PHP5.3\php-cgi.exe" .php
</IfModule>

至于 php 5.3 支持 zend guard loader ,这比较简单,前提就是一条,必须是 fcgi 模式的php 才行,而mod_php 形式是无法支持 zend guard loader 5.5 的,切记,切记!!!

 

php程序之die调试法

经常看到有初入PHP道朋友对于php程序出现问题素手无策的情况
这是稍微有经验的phper 都会采用如下方式来解决问题
1. 看错误输出, 从输出项 反查源码,在源码处上下文加入调试代码,代码可以是最简单的
$debuglineno =  __LINE__;
die($debuglineno);
2. 根据错误输出  Google 之 或者 百度一下

错误的做法:
1. 直接问你的上级,或者同事
2. 直接!上论坛求助 而不是首先经过自己排查
3. 不去分析问题,而是发牢骚