首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排队的php fpm请求

排队的php fpm请求
EN

Stack Overflow用户
提问于 2010-09-01 17:03:55
回答 1查看 1.3K关注 0票数 4

我在服务器上使用php 5.2.11 + php-fpm + nginx。如果用户发送了一个耗时的请求"A",在收到服务器对"A“的响应之前,他会发送更多的正常请求。奇怪的是,在返回响应"A“之前,用户无法获得任何响应,似乎php-fpm会将请求排入队列。我检查了tcp连接,请求来自不同的socket,具有相同的PHPSESSION。在服务器端,php-fpm也将正常的请求写入慢日志。

我想不出该怎么解决,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-24 06:34:23

这不是PHP-FPM的错误。既然你说他们有相同的会话,那么这就是罪魁祸首。在PHP中,会话有一个每个会话的锁,所以当存在使用相同会话的未完成请求时,一个用户不能加载一个具有特定会话ID的页面;当您调用session_start()时,阻塞就会发生。这是为了避免不同的请求编辑相同的会话变量(这会导致各种问题)。当一个请求结束并将其结果会话数据写入存储区时,下一个请求就可以开始了。

如果您希望能够读取会话变量并启动一个耗时的作业,但又不想阻止其他请求的发生,那么只需在读取您需要继续的会话数据之后使用session_write_close()。注意,在调用之后,您不能修改会话数据(也许您无法读取它,因为$_SESSION是空的,但是无法记住)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3616463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档