session_write_close
的PHP documenation说
...但是当会话数据被锁定以防止并发写入时,任何时候只有一个脚本可以在会话上运行。
有人可以详细说明这意味着什么吗?这是否意味着实际会话存储被锁定以进行写入?如果是这样,我正在使用写入SQL数据库的自定义会话处理程序,那么事情会如何变化?在锁定被释放之前,该会话的所有后续请求是否完全被阻止?
我问,因为我正在使用一个使用MySQL数据库中的表的自定义会话处理程序,而且我认为当一次会话中有多个请求进入时,我可能会遇到竞争条件。如果第一个请求从表中读取会话,并且第一个请求在第一个请求到来之前进入,第二个请求是否会被阻止,直到第一个请求完成或调用session_write_close
?如果没有,如果在第一次写入之前已经读过,那么第二个是否可以覆盖第一个刚刚写入的内容?
另外,如果第一个请求在读取会话之后但在写入之前中止,那么session_write
仍然会被调用吗?