为什么session_write_close应该用于长轮询?

时间:2012-09-13 07:23:09

标签: php session long-polling

我正在阅读一篇关于Nolithius长期民意调查的文章。在 PHP在整个会话中休眠部分下,写入应调用session_write_close函数以防止整个会话陷入死锁。僵局究竟是什么意思?是否意味着如果没有此函数,在客户端打开的同一域中的任何其他页面将无法从其他脚本(如此脚本)接收AJAX数据,直到此脚本执行完并返回结果为止?为什么会这样? session_write_close如何在这里提供帮助?在他收到此请求的数据后,下次从该域请求页面时,是否会使用它从客户端删除所有个性化内容?

1 个答案:

答案 0 :(得分:17)

这是我的理解:

当使用基于文件的会话时,每个请求都会将文件锁定,直到请求结束。

意味着下一个请求(也使用会话数据)必须等待释放锁。

这用于避免会话数据损坏。

使用session_write_close()将清理(但不会丢失任何会话数据)并在文件前面释放锁定,以允许其他请求继续。

这是一种很好的做法,特别是如果你的脚本可能会睡得很多,可能就是这样。