php - 在数据库更改时更新 PHP session 变量

标签 php mysql session

底线在前:有没有办法从在 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/

相关文章:

MySQL : How to get latest row on optional where clause using group by?

mysql - 带有表变量和返回值输出的动态 SQL

php - 无法启动 session : already started by PHP ($_SESSION is set). 500 内部服务器错误 - RuntimeException

php - 从上一页获取数组值并显示在表格中

php - 非 WSDL php 调用

php - undefined variable 当值为空时

php - CakePHP/phpunit : how to mock a file upload

php - 在 HTML 中,多个选择以逗号分隔保存在 MySQL 中(有效),但不会从基于类的读取方法重新显示

java - JavaMail 中的 session

session - Web 应用程序的基于 token 的身份验证 : how to cache token?