php是单线程吗,php语言是单线程吗?
php语言是单线程吗?
回复内容:
php语言是单线程吗?
准确说,是。
但也不是。
每个PHP文件的执行是单线程的,但是,服务器(apache/nigix/php-fpm)是多线程的。每次对某个PHP文件的访问服务器都会创建一个新的进程/线程,用来执行对应的PHP文件。
也就是说对于一个请求来说PHP是单线程的,但是多个请求间是并发的。
其实一般写 PHP 程序认为是单线程的就可以了。多个请求之间相互的关系就是,有些时候读写数据库,文件,session等会加锁,会导致后面的请求挂起等待前面的请求执行完才继续。
至于协程,只能说是一种新的程序执行流程(旧的是顺序,判断,循环),本质是也是单线程的。
建议你先看看进程,线程的概念。
php有多进程和多线程。只不过做web的话一般接触不到进程和线程的使用。php-fpm是进程。
通过使用pthreads扩展,你可以在cli用线程安全版PHP写多线程程序。
Web上面,PHP-FPM是一个多进程的FastCGI服务,master进程epoll异步接受请求并分发给worker进程处理。不建议在Web运行模式下使用pthreads多线程扩展,因为稍有不慎,就有可能让PHP-FPM的worker进程崩溃或发生错误。多进程其实是一种非常高效的服务器架构,比如20个核心的服务器开40个PHP-FPM worker进程就好,避免CPU过多的上下文切换开销,占用过多的内存。
现在还有协程的概念,可惜没看懂
相关标签:php
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php是单线程吗,php语言是单线程吗?相关推荐
- php 单线程还是多,php语言是单线程吗?
php语言是单线程吗? 准确说,是. 但也不是. 每个PHP文件的执行是单线程的,但是,服务器( apache/nigix/php-fpm )是多线程的.每次对某个PHP文件的访问服务器都会创建一个新 ...
- 大漠插件ocr多选字库_易语言大漠单线程模块制作设置字库及Ocr识别字符串
识字找字是大漠插件最核心的东西,通过识别游戏画面中的文字返回坐标完成鼠标点击等动作,识字必须先制作字库,设置字库,本课演示了如何设置字库,如何调用字库,封装的大漠命令有:SetDict.UseDict ...
- cpu多核 node 单线程_详解node单线程实现高并发原理与node异步I/O
一.node单线程实现高并发原理 众所周知nodejs是单线程且支持高并发的脚本语言.可为什么单线程的nodejs可以支持高并发呢?很多人都不明白其原理,下面我来谈谈我的理解: 1. node的优点: ...
- java如何确保单线程_java是如何解决单线程之间的通信问题呢?这篇文章给你答案...
人与人之间通过交流构成了这个丰富多彩的世界,在计算机中,通过即时通信工具传递信息为我么的生活增添了很多乐趣也提供了很多遍历,而在java线程的世界里,线程之间的通信,可以极大的增强我们的功能,今天就带 ...
- 易语言大漠插件单线程模块制作后台找字FindStrFastE
易语言用不了FindStrFast可以用FindStrFastE接口来代替,这个找字命令是专门为易语言开发的. 511遇见大漠模块制作 大漠接口说明 FindStrFastE 函数简介: 同FindS ...
- 五大点,搞懂单线程的Redis到底快在哪里
目录 前言 一.开发语言 二.纯内存访问 三.数据结构简单 四.单线程 五.非阻塞多路I/O复用机制 前言 Redis是一种基于键值对(Key-Value)的NoSQL数据库,Redis的Value可 ...
- 为什么说php单线程,php单线程的缺点是什么?
PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 PHP ...
- 前端小知识点(3):JavaScript 单线程
目录 一.为什么 JavaScript 是单线程? 二.JavaScript是单线程,怎样执行异步的代码? 三.事件循环机制 四.代码1 五.结果1 六.代码2 七.结果2 一.为什么 JavaScr ...
- javascript 等待指定时间_javascript的单线程和任务队列
一.JavaScript为什么设计为单线程? JavaScript语言的一大特点就是单线程,换言之就是同一个时间只能做一件事.其他任务都必须在后面排队等待. for(var i = 0; i < ...
最新文章
- 说说项目从0-1过程中的那点事儿
- 第三十三篇、富文本 NSMutableAttributedString
- 图片→矩阵→空间→坍缩-→质点--用神经网络将空间坍缩成粒子的实验数据汇总
- 【sprinb-boot】Junit测试
- 计算机的好处英语,跪求一篇英语作文 题目:论计算机的优缺点
- Android Studio 3.0 下 Cordova 打包时 Gradle 兼容性问题解决
- 【clickhouse】clickhouse源码 Distributed之表select流程
- 001-keras简介
- Mysql跨表更新 多表update sql语句总结
- serialVersionUID 的含义
- 电脑连接热点无internet访问权限_电脑连接手机热点时出来无internet安全是什么意思?...
- MATLAB app designer 如何设置背景图片
- 服务器上的系统盘和数据盘,云服务器系统盘和数据盘区别
- Oracle动态采样分析
- GitLab完整搭建(版本6.3.1)
- 如何配置一个极简舒适的终端环境:oh-my-zsh 和iterms配置
- 美团外卖uml流程图_美团即时物流的分布式系统架构设计
- H - 卡牌游戏(简单期望)
- CSS中有哪些隐藏页面元素的方法?
- java输出的时候出现[Ljava.lang.String是什么意思+解决方法