就当时标题党吧服务器上有一个php 文件 比如是1.php当别人请求这个文件的时候
这个文件就会被执行 然后返回给客户端执行后的东西我的问题是
当a客户访问的时候1.php的时候 这是服务器还没有执行完,
突然后b客户也来访问了 这是1.php是等返回了a的请求在执行b的请求了,还是可以同时执行b的请求
这个文件就会被执行 然后返回给客户端执行后的东西我的问题是
当a客户访问的时候1.php的时候 这是服务器还没有执行完,
突然后b客户也来访问了 这是1.php是等返回了a的请求在执行b的请求了,还是可以同时执行b的请求
解决方案 »
- php的file_get_content不会销毁读取到内存中的文件内容吗?
- Discuz!x和uchome这些是啥区别啊
- 求助贴: Warning: msg_get_queue(): failed for key 0x610005bd: File exists in
- 查询问题
- 请教一数据库的设计问题
- 请教一个问题...急....就剩下20分了.
- mysql中字段值有空格的检索问题
- [求助]为什么在刷新时'form'会自动提交?
- setcookie与header的问题.
- 如何将两个文件的内容一起复制到一另一个文件中去?
- 请教个基础的mysql查询问题
- 如何在CENTOS6.3中安装apache+php+mysql(基础问题)
你知道为什么现在都推崇nginx来取代apache,为什么nginx处理并发问题比apache要强很多吗?因为apache采用的是linux旧版本内核的select模型,而nginx采用的是2.6+版本的epool模型。回到具体你说的这个问题上,如果b客户来访问时,服务器等待a客户的处理结果再接受b的请求,这就是select模型的工作方式。从接收到请求后之后,同一个进程会一直follow这整个握手过程,知道response结束。这种模型也很容易遭到ddos攻击。而epool模型,是异步的。服务器接收到一个请求后,由一个主进程负责把任务合理分工开,有个负责分发任务的线程只负责分发任务,剩余的事情委托给其他线程去处理,其他线程处理完毕后,会callback一下主进程可以response了,然后返回给相应客户端。这样的工作方式,每个请求都不会相互阻塞。不过这样解释后,你可能会不明白,难道说apache就没法处理并发任务了?一个请求阻塞了,其他的请求都进不来了?当然不是,apache worker模式下会开n个进程,所谓的阻塞,也只会阻塞住一个进程。但select模型的这种工作方式确实效率很低。这部分知识,你可以去参考libevent