gpt4 book ai didi

php - 大型 PHP session 减慢 Web 应用程序

转载 作者:可可西里 更新时间:2023-11-01 06:33:20 25 4
gpt4 key购买 nike

我有一个 Web 应用程序,其中复杂的权限决定了用户是否有权访问数千个不同文件中的每一个。用户可以看到所有文件,但有一个指示器可以打开他们有权访问的文件。如果组织中的其他人可以访问某个文件,或者与他们协作的某个人可以共享该文件的访问权限,则该用户可以访问该文件。

现在,我有一个复杂的 PHP 函数,它通过构建用户有权访问的文件数组(无论是在他们的组织中还是在他们的协作中)并合并这些访问数组来生成大型 PHP session 。当这些文件显示给用户时,PHP 会检查这个数组以查看它们是否可以访问,如果可以,它会添加打开文件的按钮。我之所以这样做,是因为在显示长文件列表时运行查询以检查对每个单独文件的访问权限最终花费的时间太长,而 PHP 的 in_array() 速度要快得多。

问题是……

php session 变得如此之大,以至于它似乎正在减慢简单网站功能的速度,以至于爬行,我需要想出一种新的方法来做到这一点。

我的问题是...

什么是最好的方法来替换 PHP session 来存储用户有权访问的数千个文件的文件权限和文件位置,以便在显示文件列表时,PHP 可以快速检索此信息,而无需为每个单独的文件运行查询?

最佳答案

嗯,在不知道问题的全部范围的情况下,我建议在您的数据库中添加一个 Sessions 表并包含一个 FilePermissions 字段和一个 UserId 字段。

此字段将存储您的权限结构的 json 表示。这将只需要对数据库进行一次调用,并且大部分处理将在解析 json 数据服务器端时进行(根本不会有太多开销)。

这是减少客户端 session 信息大小的标准方法。一个好的经验法则是将任何内容放在 Sessions 表中,以公开您的应用程序的逻辑。

更新

我只会将他们确实有权访问的文件存储在 json 字段中。不存在可以假设为禁止他们访问文件。这将再次减少性能足迹。

这只有在没有复杂的权限结构(比如每个文件都有读写权限)的情况下才有效。如果没有,我会说你没事。

关于php - 大型 PHP session 减慢 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7541740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com