Php 从mysql只生成一次数据然后保存?

Php 从mysql只生成一次数据然后保存?,php,mysql,save,instance,store,Php,Mysql,Save,Instance,Store,这很难解释,所以我只能说我有什么和我需要什么 当用户访问任何页面时,我(每次)从mysql生成3个包含数据(大量数据)的数组。我需要这个页面标题中的选择选项 字符串总数~4000 $a[1]['name']=“balallbal” $a[1]['desc']=“balallbal desc” $a[4000][name']=“balallbal 4000” $a[4000]['desc']=“balallbal desc 4000” 我是否可以以某种方式存储此数据实例或smth,这样当用户转到

这很难解释,所以我只能说我有什么和我需要什么

当用户访问任何页面时,我(每次)从mysql生成3个包含数据(大量数据)的数组。我需要这个页面标题中的选择选项

字符串总数~4000

$a[1]['name']=“balallbal”

$a[1]['desc']=“balallbal desc”


$a[4000][name']=“balallbal 4000”

$a[4000]['desc']=“balallbal desc 4000”


我是否可以以某种方式存储此数据实例或smth,这样当用户转到另一个页面时,它将使用存储的数据而不是查询mysql

使用$\u会话变量,它会在用户浏览站点时保留您的数据


检查这个变量是否存在,并且在代码的开头有您的数据(比如start.php、init.php、header.php。将它包含在所有页面中)。如果没有,则使用mysql查询填充一次,然后在其他页面上使用$\u会话。

可以。您必须为此使用$\u会话$_会话通过页面存储数据,直到用户关闭浏览器

这样做:

if($_SESSION['data-query'] == '')
{
   $data_array = get_data_from_db();
   $_SESSION['data-query'] = true; // to prevent the next data query
   $_SESSION['cat-data'] = $data_array;
}

或者您可以使用计数($\u SESSION['cat-data'])==0而不是“数据查询”(如注释中所述)

您可能需要尝试memcache。当用户第一个请求进入时,将结果存储在memcache中,对于下一个后续请求,您可以从memcache中提取数据,而不是查询sql。 数据存储在缓存中的时间也是可配置的。

在这种情况下,您可以使用APC cache或memcached(或任何其他缓存守护进程)并在会话中存储此数据的唯一ID。但是,我认为会话足以存储此数据。您可以在服务器端优化会话参数;一旦用户关闭浏览器,会话数据将不会被删除。饼干是。而且您不需要额外的字段(
$\u会话['data-query']
)。只需检查会话['cat-data']是否已填充。我听说过singleton模式可用于此目的吗?Signleton设计模式(我不太了解),但不太推荐。尽管使用$\u会话似乎是这种模式的产物。我在回答中建议的是最好的选择。如果你觉得有用,别忘了投票。。