PHP会话文件互斥锁问题求解方法
(1)当会话变量被修改,session_write_close()立刻被用来保存会话数据和释放文件锁。
session_start();
_session { } =美元测试'测试';
session_write_close();
做某事
(2)使用的session_set_save_handler()函数是自定义会话处理的实现。
功能开放($保存路径,列出美元)
{
echo'open叫';
返回true;
}
函数关闭()
{
echo'close叫';
返回true;
}
阅读功能($ SessionID)
{
echo'read叫';
返回' ';
}
函数编写($ SessionID,$data)
{
echo'write叫';
返回true;
}
功能破坏($ SessionID)
{
echo'destroy叫';
返回true;
}
函数GC($生命周期)
{
echo'gc叫';
返回true;
}
session_set_save_handler(打开
register_shutdown_function('session_write_close);
session_start();
_session美元{ 'foo} =酒吧;
当然,在PHP 5.4.0,你可以通过实现sessionhandlerinterface接口或sessionhandler类继承使用它。
类mysessionhandler延伸sessionhandler {
公共功能__construct()
{
}
公共功能开放(save_path美元,美元session_id)
{
}
公共功能关闭()
{
}
公共功能create_sid()
{
}
公共函数读取($ id)
{
}
公共函数写入($ id,$数据)
{
}
公共功能破坏(id)
{
}
}
为处理=新mysessionhandler();
/ /功能session_write_close二参数()注册为register_shutdown_function()函数。
session_set_save_handler(合处理,真的);
您可以实现并封装上面的代码,并使用MySQL或其他内存数据库来管理会话数据,也可以解决集群的使用问题。
当时,会话数据共享是一个问题。