和php相识于2015年(大二),第一次握手它有着不愉快的经历,曾誓言决不再接触有关它的任何东西。无奈,年少轻狂,毕业后工作的内容却要天天和它打交道,papapa的打脸。既然和它有如此般孽缘奇分,那就好好待它,用心重新认识它。
认识它,还是的先从它的前世今生开始。php圈有个奇怪的现象:他们天天在使用php,却极有可能对php的各个版本不了解,或是模糊认识。这也难怪,我浪迹在各大博客时,发现php的分类简直繁多。下面给出的是官网下载的压缩包,我们可以从压缩包的名字入手理解:php-5.6.34-nts-Win32-VC11-x64.zip
一、首先是php,简直废话,跳过。
二、5.6.34,同时也是人称的PHP5,由第一个数字5决定. (注:PHP4由于太古老,对OO支持不给力已基本淘汰;PHP5是现在主流使用的版本;PHP6、7由于没有在生产线上,此文不多介绍)。第二个数字6,代表PHP5后的6版本, PHP5其实有5.2、5.3、5.4、5.5、5.6版本,由于为了之后开发,对框架和扩展的兼容,所以先生选择用5.6的版本。各个版本之间区别如下:
PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束
PHP5.2:JSON 支持
PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc,const, 三元运算符,Phar
PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改
PHP5.5:yield,list() 用于foreach, 细节修改
PHP5.6: 常量增强,可变函数参数,命名空间增强
深入了解见链接: 01 https://www.cnblogs.com/myvic/p/7707437.html
02 https://www.cnblogs.com/wawahaha/p/4660354.html
三、nts (Non Thread safe),非线程安全。如果没有这个表示即时ts(Thread safe)。为什么会有这样的区分呢?什么情况下使用非线程安全,什么时候要使用线程安全呢?别爪机,容我缓缓道来。大写,只有windows&&PHP5.2.1之后,才有nts和ts之分。
3.1、Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。
3.2、Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。
3.3、说到CGI,不得不提和并存的ISAPI。这是php的两种执行方式。
3.3.1、CGI,多进程模式。模式对于每个HTTP请求都需要开辟一个进程,即重新加载和卸载整个PHP环境,其消耗巨大。
3.3.2、由此推出了CGI的升级模式:FastCGI 。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。 (抑制进程开辟的思路)
3.3.3、ISAPI,
多线程模式。执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率。
(在前提条件全局配置php,或是在php目录下启动php啦啦啦), 可以通过命令函窗口运行php -r "phpinfo();"。 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。
了解完这几点之后,如果看客你是选择nts,那么建议使用FastCGI模式启动;如果是ts,那么建议使用ISAPI模式。无论那种搭配,其实最终的目的是:控制线程或是进程数,降低资源消耗。
四、win32,我下载了几个windows的安装包,均带有这个标记。要强行解释的话,可能就是windows系统版本的php安装包吧吧吧。
五、VC11.其实还有VC6、VC9、VC11的区别。
VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。(
这个问题不大,因为从php 5.3,已经没有vc6版本提供下载了
)
VC9版本是使用Visual Studio 2008编译器编译的,
是针对IIS服务器的版本,没有对APACHE的支持
。如果你的PHP是用IIS来架设的,那你就选择 VC9版本。
VC9版本要求用户安装Microsoft Visual C++ 2008 SP1 Redistributable Package(x86 | x64)
VC11版本是使用Visual Studio 2012编译器编译的 。VC11版本要求用户安装Visual C++ Redistributable for Visual Studio 2012(x86 | x64)
六、x64对应64位系统,x86对应32位系统。
七、zip,解压后可以直接使用。当然,不嫌麻烦者,可以下载source code。用VS编译生成文件,这也是可行的。
我是先生,找寻着那位迷路的Miss。最后,愿各位phper,合上电脑的刹那,有着侠客收剑入鞘的骄傲!
网友评论