想到一个很奇怪的问题:如果 A、B、C 提交的参数不同,同时访问同一个 php 的文件,那么 php 是同时处理这三个还是按先后顺序来的?

2015-04-29 17:54:17 +08:00
 fkbd
2634 次点击
所在节点    问与答
7 条回复
111111111111
2015-04-29 18:07:25 +08:00
这要服务端决定吧
august
2015-04-29 18:19:21 +08:00
你怎樣“同時”訪問一個 php file?
msg7086
2015-04-29 18:43:56 +08:00
建议学习一下多核、多线程、操作系统、时间片之类的知识。
raincious
2015-04-29 18:47:47 +08:00
PHP是单线程的。

因此在一个单线程/进程的服务器上,请求会依照到达顺序一个个处理。
而在一个多线程/进程的服务器上,则由服务器仲裁,将请求分别发送给不同的线程处理,最后递交给一个PHP处理过程。

但是PHP自己是单线程的,因此不在乎请求的到达顺序。倒是数据库/缓存那边可能会出现冲突,如果必要需要用到锁。
raincious
2015-04-29 18:50:48 +08:00
@raincious 以上只是PHP作为Nginx或Apache等HTTP服务器的处理器时的情况,如果你使用PHP直接写了一个Socket服务器,那么这些并发的请求如何处理是由你自己决定的。
julyclyde
2015-04-29 20:31:32 +08:00
可以是任何顺序,也可以是交错执行
换句话说就是你不能假设和依赖“顺序”这个东西
yakczh
2015-04-29 22:55:39 +08:00
三个进程,取决于cpu调度算法, 如果是多个核心,那就各运行各的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/187298

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX