php语言是单线程吗?

php中文网
发布: 2016-06-06 20:25:10
原创
2264人浏览过

php语言是单线程吗?

回复内容:

php语言是单线程吗?

准确说,是。
但也不是。
每个PHP文件的执行是单线程的,但是,服务器(apache/nigix/php-fpm)是多线程的。每次对某个PHP文件的访问服务器都会创建一个新的进程/线程,用来执行对应的PHP文件。
也就是说对于一个请求来说PHP是单线程的,但是多个请求间是并发的。
其实一般写 PHP 程序认为是单线程的就可以了。多个请求之间相互的关系就是,有些时候读写数据库,文件,session等会加锁,会导致后面的请求挂起等待前面的请求执行完才继续。
至于协程,只能说是一种新的程序执行流程(旧的是顺序,判断,循环),本质是也是单线程的。

建议你先看看进程,线程的概念。
php有多进程和多线程。只不过做web的话一般接触不到进程和线程的使用。php-fpm是进程。

通过使用pthreads扩展,你可以在cli用线程安全版PHP写多线程程序。

立即学习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中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号