0

对于我的站点/应用程序,我希望在运行时存储在内存中的“应用程序首选项”之类的东西。

这些基本上是通用的(相当长期的设置),被多个地方的多个脚本使用。

示例:可以为站点上传的文件的最大大小。

我想到了几个解决方案,但没有一个真正完全满足需求:

  1. 仅在 DB 中拥有应用程序首选项 -> 缺点是基本上需要始终在数据库中查询相同的数据(例如,在一个脚本中多次查询)。

  2. 普通变量/数组->据我了解,这些是为每个脚本、每个用户实例化的,因此这将占用大量内存

  3. 会话->再次,这是为每个用户创建的,因此再次消耗了更多真正需要的服务器资源(因为所有用户的数据都相同)

底线是我希望在内存中有偏好(用于快速访问),但不希望它们被多次实例化(以优化内存消耗)。

如果有人以前解决过这个问题,我将不胜感激任何建议或建议。

4

2 回答 2

1

最好的存储设置机制之一是使用 php 数组。根据需要使用默认设置。将它与用户保存在另一个地方的数组合并,php 将使用 APC opcache 代码处理快速访问。

<?php

    $defautSetting = array(
        'foo' => 1,
        'baz' => false,
    );

    $usedSetting = array_merge(
        $defautSetting,
        require '/path/to/user/saved/settings.php',
    );

    var_dump($usedSetting['baz']); // true

和用户设置文件。

<?php

     // /settings.php

    return array(
        'baz' => true,
    );

遵循快速和良好的工程框架,如 zendframe 工作。他们会让你更好地了解许多这样的机制。

于 2013-05-25T16:15:40.003 回答
0

我曾经写过一个简单的 CMS,有一个名为 settings 的表,有两个字段,键和值。

我在第一次需要该设置时通过键查询,然后将键和值存储在数组中。

每个设置只使用一个查询,但您可以在所有页面的顶部执行一个功能,一个查询和一个循环。

于 2013-05-25T18:13:42.540 回答