好的,我正在存储一个会话变量,如果它被设置而不是调用数据库,则可以更快地加载用户布局。但由于可以通过管理员更改布局,我希望能够全局删除为所有用户设置$ _SESSION ['layout'] ['action']的所有会话。
$_SESSION['layout']['action'] = array(a ton of indexes and mulit-dimensional arrays);
现在,我知道它存储在我的数据库会话表中,有一个session_id,last_update和data的列。所以,我的问题是如何从所有用户中删除该会话数组键['action']。
使用
$_SESSION = array();
session_destroy();
不起作用。 基本上,session_start()正在加载每个页面,所以我只想从['layout']中删除所有['action']键。
这可能吗? 感谢
答案 0 :(得分:5)
好的,我正在存储一个会话变量 像这样加载用户布局
<强>错强>
我希望能够全局删除 所有会议
<强>错强>
它存储在我的数据库中
OMG“而不是调用数据库”!
这可能吗?感谢
单独保留会话,不要将其用于全局设置。
答案 1 :(得分:0)
如果您不希望每次都加载数据库以加载配置数据,则可以将其缓存在生成的.inc文件中。请记住,PHP只是文本 - 您可以使用PHP脚本生成另一个PHP脚本:
$fh = fopen('sitevars.inc'); // skipping error handling, since this is an example.
fwrite($fh, '<' . '?php' . "\n"); // split the <? tags in case an unbalanced ' somewhere hoses things
fwrite($fh, '$lifetheuniverse = 42;' . "\n"); // single quotes to the $ doesn't have to be escaped.
fwrite($fh, "\$layoutaction = 'slap forehead with palm';\n");
fclose($fh);
然后你只是include_once('sitevars.inc');
并且繁荣,这是一个“全球”变量。没有搞乱会议。
话虽这么说,如果您的会话存储在数据库中,很可能它们是序列化格式。要正确地从每个中删除特定的“全局”会话var,您必须加载每个记录,反序列化,删除变量,重新序列化并重新保存到数据库中。并且希望你不要在你正在进行这些更新时捣乱某个人的会话。