8

我正在阅读一篇关于Nolithius的长投票的文章。在PHP sleeps across the entire session部分下,写到session_write_close应该调用该函数以防止整个会话陷入死锁。这里的死锁到底是什么意思?这是否意味着如果没有此功能,在客户端打开的同一域中的任何其他页面将无法从其他脚本(如此脚本)接收 AJAX 数据,直到该脚本完成执行并返回结果?为什么会发生这种情况?在这里如何session_write_close提供帮助?在他收到来自该请求的数据后,下次他从该域请求页面时,不会使用它从客户端删除所有个性化吗?

4

1 回答 1

18

这是我的理解:

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

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

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

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

这是一种很好的做法,尤其是如果您的脚本可能会经常休眠。

于 2012-09-13T07:30:22.737 回答