mordorwww 发表于 2013-06-18 21:29

PHP并发用户和并发会话访问数据库/IO的问题

本帖最后由 mordorwww 于 2013-06-18 21:33 编辑

如果PHP向数据库或者某个本地文件发起请求(读),那么当前的PHP进程(线程)是不是就挂起,等到数据库响应回来或者文件可读(从PHP访问数据库的范例代码看,应该只能如此)?

如果真是如此,那么多个用户、会话同时向PHP请求时, 当前的PHP进程(线程)也只能原地死等闲等,等数据库/IO响应就绪并处理完成后,才能处理下一个用户、会话。

当然可以使用线程池之类的,但是如果并发用户和并发会话太多从而线程太多,显然也不是好主意

maochanglu 发表于 2013-06-21 09:20

一个http请求,就启用一个php进程的。

mordorwww 发表于 2013-06-21 09:34

本帖最后由 mordorwww 于 2013-06-21 13:01 编辑

maochanglu 发表于 2013-06-21 09:20 static/image/common/back.gif
一个http请求,就启用一个php进程的。

如果10000个http请求,那就10000个php进程?
这样效率太低了,那不是和cgi一样了

zhtrue 发表于 2013-06-22 10:30

php是作为apache的模块加载的,所以当发生http请求的时候,apache会使用一个httpd进程来运行响应的php脚本,不会重复创建php进程。所以效率不会是问题。

mordorwww 发表于 2013-06-22 17:15

本帖最后由 mordorwww 于 2013-06-22 17:22 编辑

zhtrue 发表于 2013-06-22 10:30 static/image/common/back.gif
php是作为apache的模块加载的,所以当发生http请求的时候,apache会使用一个httpd进程来运行响应的php脚本, ...


那 如果一个http请求中,php向数据库发了一个查询请求,接下来PHP是等数据库响应呢还是继续处理后面的http请求

cuphper 发表于 2013-06-24 13:00

mordorwww 发表于 2013-06-18 21:29 static/image/common/back.gif
如果PHP向数据库或者某个本地文件发起请求(读),那么当前的PHP进程(线程)是不是就挂起,等到数据库响应回来 ...

是啊,,
页: [1]
查看完整版本: PHP并发用户和并发会话访问数据库/IO的问题