底线在前:有没有办法从在 session 外运行的服务器上的脚本更新 session 变量?
详情:我正在使用 MySQL 存储大量用户信息。当用户登录时,我将一些信息存储在 $_SESSION 中,作为缓存数据的一种方式,以减少 SELECT 查询的数量。用户使用数据,所做的任何更改都会保存到数据库中。
问题在于,当用户使用数据的 $_SESSION 表示时,数据库中的数据可能会发生变化。在这种情况下,一组更改可能会覆盖另一组。在 $_SESSION 中使用数据时,“锁定”数据库中的数据是不可行的。
当数据被“ check out ”时,用 $_SESSION id 标记数据库并更新数据的 $_SESSION 表示是相当简单的,如果脚本对 check out 数据进行了更改。我只是不知道可以从 session 外部调用的服务器上的脚本调用什么(如果有的话)来更改该 session 中的变量。
最佳答案
收到您的评论后,我认为此解决方案对您有用:
当您开始 session 时,将 session ID 保存在您的数据库中:即
<?php
session_start();
$sid = session_id(); // suppose o4lb6s392r2mj1vv6nhlrjfmp1
$_SESSION['user_solr'] = 'admin';
你会得到一个字符串。当您想要更改 session 数据而不刷新用户页面加载时,请执行以下操作来更改用户的 session 数据:
<?php
session_id('o4lb6s392r2mj1vv6nhlrjfmp1'); // previous session id
session_start();
$_SESSION['user_solr'] = 'editor';
更新: 这也将起作用:
<?php
session_start('o4lb6s392r2mj1vv6nhlrjfmp1'); // previous session id
$_SESSION['user_solr'] = 'editor';
关于php - 在数据库更改时更新 PHP session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22742679/