因此,我正在考虑使用nginx、nginx-http-push-module和PHP-FPM来构建一个应用程序,在进行了大量的配置之后,我成功地处理了PHP页面。
然而,我不明白的是会话应该如何工作——我看到的所有nginx+NHPM的示例都通过发布者-订阅者系统运行,但如果订阅者通道将有效地唯一属于订阅者,那么应该发生什么情况并不清楚。例如,考虑一个具有公共频道和每个用户的私人频道的聊天系统。
现在,在传统的PHP设置中,您将传递cookie到PHP,从那里查找会话,并根据用户是否经过身份验证来处理页面的其余部分,但是对于PHP-FPM和长轮询,它似乎不应该像这样工作。
我可以理解如果请求是非经过身份验证的用户,您只需使用错误消息将其丢弃并终止客户端的长轮询,因为知道它无效,但是对于有效的请求,您几乎需要从客户端轮询,然后在PHP中进行身份验证,然后断开但保持请求打开——我不确定那部分是如何工作的。
有人能解释应该如何实现吗,最好附带一个示例?请注意,我在这里不寻找HTTP基本身份验证,我需要根据存储在MongoDB中的单独数据进行身份验证。
然而,我不明白的是会话应该如何工作——我看到的所有nginx+NHPM的示例都通过发布者-订阅者系统运行,但如果订阅者通道将有效地唯一属于订阅者,那么应该发生什么情况并不清楚。例如,考虑一个具有公共频道和每个用户的私人频道的聊天系统。
现在,在传统的PHP设置中,您将传递cookie到PHP,从那里查找会话,并根据用户是否经过身份验证来处理页面的其余部分,但是对于PHP-FPM和长轮询,它似乎不应该像这样工作。
我可以理解如果请求是非经过身份验证的用户,您只需使用错误消息将其丢弃并终止客户端的长轮询,因为知道它无效,但是对于有效的请求,您几乎需要从客户端轮询,然后在PHP中进行身份验证,然后断开但保持请求打开——我不确定那部分是如何工作的。
有人能解释应该如何实现吗,最好附带一个示例?请注意,我在这里不寻找HTTP基本身份验证,我需要根据存储在MongoDB中的单独数据进行身份验证。