PHP是单线程还是多线程?

PHP是单线程还是多线程?

大家好,又见面了,我是全栈君。

PHP 从设计之初到流行起来都没有出现明显需要用多线程才能解决的需求。某些需要用到多线程的地方也有相应的解决方案和替代方案。多线程并不总是比单线程优,多线程可能会引入其他问题(例如:两个线程同时调用一个类里的同一个方法时,可能出现死锁的情况)。

      你可以这样理解 对应一个客户的一个页面请求处理的php 是单线程处理的, 这样一来就可以自上而下的去编辑/理解代码中的业务逻辑了, 但是 php 可以同时开很多线程来处理 很多用户请求的同一个PHP , 所以 php 也可以看成是”多线程”的。

      每个PHP文件的执行是单线程的,但是,服务器(apache/nigix/php-fpm)是多线程的。每次对某个PHP文件的访问服务器都会创建一个新的进程/线程,用来执行对应的PHP文件。

       也就是说对于一个请求来说PHP是单线程的,但是多个请求间是并发的。

       其实一般写 PHP 程序认为是单线程的就可以了。多个请求之间相互的关系就是,有些时候读写数据库,文件,session等会加锁,会导致后面的请求挂起等待前面的请求执行完才继续。

       至于协程,只能说是一种新的程序执行流程(旧的是顺序,判断,循环),本质是也是单线程的

       所以准确的说php是单线程的,一定程度上也可以看成是“多线程”!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112150.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaCV开发详解之3:通用拉流器实现,从流媒体服务器拉流rtsp/rtmp录制成视频文件

    JavaCV开发详解之3:通用拉流器实现,从流媒体服务器拉流rtsp/rtmp录制成视频文件javaCV系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)javaCV开发详解之4:转流器实现(也可作…

    2022年5月8日
    133
  • C# List集合转Json字符串示例代码

    C# List集合转Json字符串示例代码将list集合转换为Json字符串简单实现代码:publicstaticstringGetJosn(List<CalendarInfo>list){stringjsonStr=”[“;if(list!=null&&list.Count>0)…

    2022年9月25日
    0
  • 前缀和与差分数组(附练习题)

    前缀和与差分数组(附练习题)前缀和与差分数组前缀和前缀和对于a1,a2,a3,a4,a5,a6,…前缀和Si=a1+a2+a3+a4+…+ai,S0=0其中,[l,r]区间的前缀和为:Sr-S(l-1)非

    2022年5月18日
    40
  • Discuz搬家教程[通俗易懂]

    Discuz搬家教程[通俗易懂]第一步:备份网站数据进入后台—站长—数据库—备份,数据备份类型选择“Discuz!和UCenter数据”,备份成功以后,数据自动保存在data文件夹下。第二步:网站文件下载把整个网站文件打包(虚拟主机管理控制面板一般都有整站压缩和解压的功能,在控制面板选择压缩,压缩之后的文件一般在FTPDB文件夹里面,然后把压缩包下载到本地电脑,如果虚拟主机没有在线压缩功能那就直接使用FTP下载文件到本地保存。第三步:整理下载到本地的网站文件1.把下载下来的文件里面的下列文件删除,请完全放心删除掉这几个文件,

    2022年7月25日
    16
  • shell连接mysql数据库

    shell连接mysql数据库

    2021年8月8日
    140
  • 产品是什么:PMF模型

    产品是什么:PMF模型一,产品是什么1.能够供给市场2.被人们使用和消费3.满足人们的某种需求需求是产品的基石二,PMF模型PMF(productmarketfit)产品和市场达到最佳的契合点,所提供的产品正好满足用户的需求,令客户满意。1.TargetCustomer目标用户:明确目标用户2.UnderservedNeeds目标用户未被满足的需求:需求分为已有需求,潜在需求,未来需求。分析用户属于哪种需求3.ValueProposition产品的价值定位:明确产品的价值定位,确定产品未用户

    2022年5月10日
    95

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号