这两天配置 BugFree v1.12 的过程中发现了一个 bug,在后台管理中,添加项目后,页面左侧的项目列表中并不会出现新加的项目。必须全部关闭当前的窗口,然后重新登录后才有。查看代码后发现问题在于 BugFree 在 session 中缓存了当前的 user 的 ACL. 添加新项目后这个信息在 Session 中并不会刷新。简单起见,我做了如下修改:
在 /Include/FunctionsMain.inc.php 中,找到:
function
bugGetUserACL(
$BugUserName
)
{
global $MyDB ;
global $BugConfig ;
global $MyJS ;
/* Register Session already. */
if ( ! empty ( $_SESSION [ " BugUserACL " ]))
{
return true ;
}
// more code
}
{
global $MyDB ;
global $BugConfig ;
global $MyJS ;
/* Register Session already. */
if ( ! empty ( $_SESSION [ " BugUserACL " ]))
{
return true ;
}
// more code
}
注释掉 "return true;" 这一行即可做到每次从数据库里读取信息,从而保证实时性。这样做可能存在的缺陷是丧失了用 session 做一些缓存的优势,不过我考虑对 mysql 的整个访问次数也不会因为这个增加多少,管不了那么多了,解决问题才是最重要的。