关于php的运行机制问题有点疑惑。

发布于 2022-09-11 18:25:27 字数 279 浏览 12 评论 0

最近在学习高并发,关于php的运行机制,我有点疑惑。
我自己是这样认为的: 比如 php接受一个请求,运行5秒钟(夸张点说),那么10:00 的时候如果同时有5个请求连接php , 那么是不是 其中一个请求首先被执行,然后其他4个处于阻塞(等待)中 ? 10:05 第一个请求执行完毕,然后执行第二个......
10:00 第一个开始执行
10:05 第二个开始执行
10:10 第三个开始执行



这这样的吗 ? 还是说 php 像 比如 浏览器这样,可以同时开多个窗口同时处理呢 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

七颜 2022-09-18 18:25:27

PHP-FPM下,一个进程同一时刻只能处理一个请求,请求结束后不会关闭进程,但进程会释放资源。
你可以这样理解,每来一个请求,PHP-FPM的工作进程会调用内置的PHP解释器执行脚本处理请求,完成后释放资源接着处理下一个请求,但工作进程本身是支持后台常驻的。
另外,如果PHP跑在Swoole下,则PHP逻辑是常驻内存的,即PHP里的全局资源,包括定义的全局变量、函数、类,则都是常驻内存的。

如此安好 2022-09-18 18:25:27

PHP是属于多进程模型

在PHP开启进程的时候,就会启动配置的marster进程及相应的配置数的worker进程,如:

root      1051  0.0  0.2 274644  5588 ?        Ss   2月19   2:57 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www       1063  0.0  0.8 282620 15744 ?        S    2月19   0:42 php-fpm: pool www
www       1065  0.0  0.7 281080 13724 ?        S    2月19   0:41 php-fpm: pool www
www       1071  0.0  0.7 280824 14092 ?        S    2月19   0:40 php-fpm: pool www
www       1072  0.0  0.6 279536 12836 ?        S    2月19   0:44 php-fpm: pool www
www       1076  0.0  0.7 281080 14328 ?        S    2月19   0:41 php-fpm: pool www
www       1077  0.0  0.7 280828 14124 ?        S    2月19   0:42 php-fpm: pool www
www       1083  0.0  0.7 281084 14440 ?        S    2月19   0:41 php-fpm: pool www

php-fpm master进程负责创建和管理woker进程,同时负责监听listen连接,master进程是多路复用的;woker进程负责accept请求连接,同时处理请求,一个woker进程可以处理多个请求(复用,不需要每次都fork一个woker进程),但一个woker进程一次只能处理一个请求。
至于worker进程的配置,你可以再详细去了解一下。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文