php session 读写锁

php session 读写锁

  • 想想一个例子,功能:
  1. 点击页面中一个按钮,ajax执行php,php中用session记录执行到哪一步。
  2. 使用ajax轮询另一个php,获取session中数据,输出执行到哪一步。

 

  • 执行时发现,轮询的结果: 并不是每一步返回,而是等待10秒后直接返回complete。

当执行session_start()后,session会被锁住。直到页面执行完成。

因此在页面执行其间,对sesssion进行写操作,只会保存在内存中,并不会写入session文件。

而对session进行读取,则需要等待,直到session锁解开才能读取到。

 

  • 解决方法

我们可以使用session_write_close()把数据写入session文件并结束session进程。这样就不需要等待页面执行完成,也能获取到执行到哪一步。

但这样有个问题,就是执行完sesssion_write_close()后,对session的任何写操作都不起作用。因为session进程已经结束。

因此需要再写session时,在前面加上session_start()

 

  • 备注:
  • session_start — Start new or resume existing session 

     

  • session_write_close — Write session data and end session 

 

posted @ 2021-09-29 14:04  zakun  阅读(91)  评论(0编辑  收藏  举报
返回顶部