ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

什么是PHP中的线程安全或非线程安全?

2019-09-15 16:37:45  阅读:282  来源: 互联网

标签:php multithreading thread-safety packages threadcontext


我看到PHP的不同二进制文件,如非线程或线程安全?这是什么意思?这些套餐有什么区别?

解决方法:

并发方法需要的背景:

不同的Web服务器实现了并行处理传入HTTP请求的不同技术.一种非常流行的技术是使用线程 – 也就是说,Web服务器将为每个传入请求创建/专用一个线程. Apache HTTP Web服务器支持多种处理请求的模型,其中一种(称为worker MPM)使用线程.但它支持另一种称为prefork MPM的并发模型,它使用进程 – 也就是说,Web服务器将为每个请求创建/专用一个进程.

还有其他完全不同的并发模型(使用异步套接字和I / O),以及将两个甚至三个模型混合在一起的模型.为了回答这个问题,我们只关注上面的两个模型,并以Apache HTTP服务器为例.

关于PHP如何与Web服务器“集成”的背景知识:

PHP本身不响应实际的HTTP请求 – 这是Web服务器的工作.因此,我们将Web服务器配置为将请求转发到PHP进行处理,然后接收结果并将其发送回用户.有多种方法可以使用PHP链接Web服务器.对于Apache HTTP Server,最流行的是“mod_php”.这个模块实际上是PHP本身,但是作为Web服务器的模块编译,因此它被加载到其中.

还有其他方法可以将PHP与Apache和其他Web服务器链接起来,但mod_php是最受欢迎的方法,也可用于回答您的问题.

您之前可能不需要了解这些细节,因为托管公司和GNU / Linux发行版都为我们准备了一切.

现在,关于你的问题!

由于使用mod_php,PHP会直接加载到Apache中,如果Apache要使用其工作MPM(即使用线程)处理并发,那么PHP必须能够在同一个多线程环境中运行 – 这意味着,PHP必须是安全的,能够正确地与Apache玩球!

此时,您应该考虑“好吧,所以如果我使用多线程Web服务器并且我要将PHP嵌入其中,那么我必须使用PHP的线程安全版本”.这是正确的思考.然而,正如它发生的那样,PHP的线程安全is highly disputed.如果你真的知道你在做什么,这是一个使用.

最后的笔记

如果您想知道,我个人的建议是,如果您有选择,不要在多线程环境中使用PHP!

说到基于Unix的环境,我想说幸运的是,如果你要将PHP与Apache Web服务器一起使用,你只需要考虑这个,在这种情况下,建议你使用Apache的prefork MPM(其中不使用线程,因此,PHP线程安全并不重要)我所知道的所有GNU / Linux发行版都会在您通过其软件包系统安装Apache PHP时为您做出决定,甚至没有提示您一个选择.如果您打算使用其他网络服务器,例如nginxlighttpd,则无论如何都无法将PHP嵌入其中.您将看到使用FastCGI或类似的东西,它在不同的模型中工作,其中PHP完全在Web服务器之外,其中多个PHP进程用于通过例如回复请求来回答请求. FastCGI的.对于这种情况,线程安全也无所谓.要查看您的网站使用的版本,请放置一个包含<?php phpinfo(); ?&GT在您的站点上,查找Server API条目.这可以说像CGI / FastCGI或Apache 2.0 Handler. 如果你也看一下PHP的命令行版本 – 线程安全无关紧要. 最后,如果线程安全无关紧要,那么您应该使用哪个版本 – 线程安全还是非线程安全?坦率地说,我没有科学的答案!但我猜测非线程安全版本更快和/或更少的错误,否则他们会提供线程安全的版本,而不是打扰给我们的选择!

标签:php,multithreading,thread-safety,packages,threadcontext
来源: https://codeday.me/bug/20190915/1805520.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有