SESSION的操作有哪些?
对付PHP程序员来说,该当对session都不陌生,我们知道,关于SESSION的操作和数据库一样,有读取、写入、修正、删除,也便是说,对付一个SESSION会话,估计会有很多地方在写、很多地方再读,而且还不能够确定是读在前还是写在前。
引入锁的缘故原由

上面已经剖析了,对付同一个会话,如果没有锁的引入,我们会创造有可能读取的数据是修正之前的数据,而不是修正之后的数据,这样利用修正之前的数据进行一些操作,势必会引入很多数据不一致的问题,尤其涉及用户财产安全的数据,这种情形实在和数据库一样,而数据库是利用事务来处理,而PHP是利用锁来处理,便是锁定相应的SESSION文件。
引入锁之后会发生什么
看看上面的代码,我们首先开启会话,然后读取数据库里面某个用户的用户名,然后将这个用户名授予SESSION变量,然后休眠1000秒钟,我们知道,对付PHP默认情形下,如果一个PHP脚本结束了,SESSION对话就自动关闭了,现在由于休眠,以是SESSION对话没有关闭,导致我们打开选项卡访问另一个有SESSION操作的页面时,页面一贯等待一贯转圈圈。
怎么快速开释相应的锁
上面我们已经仿照了一种session锁的情形,这种情形实在便是描述了一种生产环境的情形,便是后面的代码须要实行的韶光很长,那么面对这种情形,我们可以采取提前关闭结束SESSION会话的办法来办理锁等待的问题。
在PHP7之前,我们可以用session_write_close函数来关闭,这种关闭不管是读取还是写入会话、更新等等都有效,不过在PHP7中专门针对读取引入了read_and_close这个,我们可以在开启会话的时候指定这个选项,这样对付读取类的会话就不用我们手动关闭了。
不知道大家创造没有,关于SESSION的锁这些知识非常像我们的数据库,只不过默认情形下,是用文件锁来完成事务的干系功能。