栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

thread-safety PHP & no thread-safety PHP 版本选择

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

thread-safety PHP & no thread-safety PHP 版本选择

不同的web服务器处理高并发的HTTP请求的方式是不同的。一个相对流行的方式是使用线程处理请求——web服务器为每一个请求创建/销毁一个线程。Apache HTTP web服务器使用worker MPM支持多线程模型处理请求。Apache也支持使用prefork MPM,用进程来处理并发的请求——-服务器为每个请求创建/销毁一个进程。worker MPM和prefork MPM可以理解为Apache的工作方式。

 

也有不同的用于处理请求的并发模型(例如异步IO),不过就回答thread-safety PHP还是no thread-safety PHP版本选择来说,我们暂时只考虑上面提到的两种模型,以Apache HTTP服务器作为例子。

 

PHP本身是无法响应HTTP请求的,由web服务器响应请求。所以我们要做的就是配置web服务器转发请求到PHP那里进行加工,然后收到加工后的结果并返还回给用户。链接web服务器和PHP的方式有多种 。对于Apache HTTP服务器,最流行的方式是”mod_php”,PHP作为Apache的模块,可以使PHP正确的加载到web服务器中。

也有其它的方式链接PHP和Apache和其它的web服务器,但是mod_PHP是较流行的用法。

我们可能并没有了解太多的细节,因为linux发行版已经为们准备好了每件事情。

回到选用PHP版本问题上。mod_php可以正确的加载到Apache之中,如果Apache打算使用Worker MPM处理并发请求,PHP必须要能够操作多线程的环境----意味着PHP必须是thread-safety的才能够和Apache良好的协作。

这时候,你可能会想,好吧,我选用多线程的web服务器加载PHP,那么我必须选择thread-safety PHP。然而实际上,thread-safety PHP是广受争议的,当你选用它的时候,你最好真正的知道你到底在做什么。

当然,并不是不可以使用多线程的环境。如果你正在使用Nginx或Lighthttpd,你应该就不会想装载PHP到web服务器中,而是使用FastCGI或者一些等价的模型。

想看一些你的网站目前应用的是什么类型的,在服务器的目录下放一个包含的文件。然后查找API条目,在那里会提到一些类似于CGI/FastCGI或者Apache 2.0 Handler的东西。

 

最后,是选择thread-safety还是no-thread-safety的PHP呢?我并没有科学的答案,但是我猜测no-thread-safety的版本更快和更少的问题,不然的话,官方应该只提供thread-safety版本的了,也不会困扰我们让我们难以选择了。

 

总结:

  1. Thread-safety 版本的PHP广受争议。

  2. Web服务器多线程工作模型可以使用其它的方案代替。

  3. 选择no-threads-safety版本的PHP应该会快一些和更少的问题(这只是猜测)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/227238.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号