前言:
在windows 在开发PHP,其实还是占绝大数的,因为其方便、快速,且成本更低,而且由于windows上面的其他与php开发相关的软件更多,所以,我们也基本是在windows在开发好,再更新到线上的Linux服务器上。那么现在一个问题来了。windows版本巨多,什么5.6啊,5.5啊,更奇怪的是他还分32位的还是64位的。最最奇葩的是它还分Non Thread Safe 和 Thread Safe 的,那么现在问题来了。选择php到底哪家强?
我们将分几点来讨论:
PHP的迭代版本选哪个?
截止现在,官网上( http://windows.php.net/download) 的PHP版本总共有4个,和主站上Linux版本是一致的。分别是:
PHP 5.6 (5.6.2)
PHP 5.5 (5.5.18)
PHP 5.4 (5.4.34)
PHP 5.3 (5.3.29)
这么多版本我们如何选择呢?不管是新安装php的还是再考虑升级php的都会陷入选择恐惧症。那怎么选呢?
我的意见是:
1. 当然是最新的稳定版本好了啊。所以5.6肯定是首选的。因为它修复了很多的漏洞,新增了很多的功能,而且也废除了很多有问题的漏洞功能。
2. 先看看你公司服务器上的php版本号是多少,再进行选择,因为5.4开始新增了很多功能,比如数组的写法。如果你这样写了。结果发到公司服务器麻痹报错了就悲剧了。所以按照公司的服务器上的版本号来。
3. 如果你的电脑还是xp 或者2003 ,那不好意思,你只能安装5.4 或者5.3 ,因为5.5已经不支持xp 和2003了。如果你是win vista或者 win7,win8 ,那您随意。
4. 如果你的代码中大量的连mysql用的是mysql扩展,而不是mysqli或者pdo,对不起,你也只能安装5.4或者5.3 。因为5.5开始,mysql扩展已经废除。
可以参考我的另一篇博文,讲解5.2-5.6各个迭代版本的更新和改进: PHP 自 5.2 到 5.6 中新增的功能详解
编译PHP的版本选哪个?
现在市面上存活的有V6, V9 和 v11 。反正说法各有风云,但是目前的官网v6 已经没有了。这些表示的是用Visual Studio 编辑器编译的。
6是用 Visual Studio 6 编译的。v9 是用Visual Studio 2008 编译的。v11是 用Visual Studio 2012编译的。
到底怎么选呢?好。说清楚点。
1. 如果你的电脑是xp 或者 2003,对不起,它们不支持 v11 编译的软件,也就是说php 5.5 和 5.6你都不能用了,你只能用 5.4或者5.3。安装目前官网的这4个下载,你就只能用 v9 编译的了。
2. 如果你的电脑是 vista 以上版本的,那就根据上面的“php迭代版本“进行参考选择。
PHP的Thread Safe 和 No Thread Safe选哪个?
做这个选择之前,我先把IIS 给排除在服务器的范围之内了。只讨论 apache 和 nginx
我们知道php 做web开发,是要依托于web 服务器的,web 服务器接受请求,然后再去请求php线程,php去解析出结果,再返回给浏览器。
Thread Safe :线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源
None-Thread Safe :就是非线程安全,在执行时不进行线程(thread)安全检查;
好,这2个明白是什么意思了之后,我们再来看我们常见的web服务器就是apache 和 nginx。
我们使用apache 作为web服务器是用的加载php模块的方式,将php作为一个子模块来用,回忆一下:
LoadModule php5_module "d:/wamp/bin/php/php5.3.13/php5apache2_2.dll"
也就是说,每一次apache接受到一个请求,都会去加载一个php5apache2_2这个dll 线程,请求过多,就会造成线程过多。所以肯定是要用 Thread Safe 版本的PHP了。
我们使用nginx 作为web服务器是用什么方式加载php的了?可以,查看我很久写的一篇博客: http://blog.csdn.net/think2me/article/details/7196404
RunHiddenConsole.exe E:/php/php-cgi.exe -b 127.0.0.1:9000 -c C:/windows/php.ini
你看,这次就不是去加载模块了,而是是启动一个exe的线程文件,所有的请求,都是这一个线程来集中处理。你说,还需不需要线程保护啊。总共就1个线程,还保护个球啊!所以肯定是用None-Thread Safe 了。
总结下:
1. 如果你是Apache作为web服务器,请用 Thread Safe 的PHP版本
2. 如果你是nginx作为web服务器, 请用None-Thread Safe 的PHP版本
PHP的x86(32位)和x64(64位)选哪个?
我觉得这是一个艺术和哲学上的问题,我不是很想深究。但是既然说了就有必要说下。
现在都是64位的天下了。你看苹果最新款的iphone 5s,iphone6 还有ipad air2 都是64位的处理器了。然后,你就要问,我是不是也要选择PHP x64的呢?
我的回答是是不一定:
1. 现在其实windows上很多的PHP的相关的插件其实还停留在32位时代,比如redis啊,memcache啊。有时候你想找个64位的适配版本很难的,难得一逼啊。所以还是用32位的PHP吧。
2. 我们在windows 上开发,其实只是单纯的开发,只要程序没bug,缓存什么都到位,运行速度到位,到时候都是要发布到Linux服务器上去运行的啊。你管PHP是32位还是64位呢?所以,用32位吧兼容。
所以我的建议是: 选择32位的!
如何查看PHP以上几点的选择各个是啥?
当然可以啊。phpinfo就是干这个事情的。随便写一个php 文件,写入以下代码:
好。打开浏览器,访问一下。跟着我一个个查询:
1. PHP迭代版本号是多少: 只要你眼睛没瞎,打开网页的第一行大字就是php的版本号,我的是 PHP Version 5.3.13
2. 编译PHP的版本是什么: 页面Ctrl + F 搜索
Compiler
关键字,一般在表格的第3行,我的是 MSVC9 (Visual C++ 2008),说明我的是v9
3. PHP是32位的还是64位的:页面 Ctrl + F 搜索
Architecture
关键字,一般在表格的第4行,显示为x86或者x64,则表示是32位或64位的。
4. PHP是Thread Safe 的还是 No Thread Safe : 页面搜索Thread Safety
关键字,显示为enable 或者 disable。enable表示是线程保护的,表示是 PHP 是Thread Safe的,反之,则表示是No Thread Safe的。
你总算搞清楚了吧。也知道自己怎么选择了吧。要是还是搞不清楚,那只能呵呵了。
还有,还是那句话,在windows平台上,我们着重还是以写代码为主,所以,如果你已经把windows平台上如何一个一个软件搭建好PHP环境已经搞过几遍了,并且熟悉如何安装了,那就不要再折腾了。直接用个集成环境就很好了,现在的集成环境用的最多的有2个,APPserv 和 wampserver。可以参考我的另一篇博文: windows 快速搭建php环境
掌声~