* [perf] decrease search params saved in session to improve performance.

This commit is contained in:
liugang
2025-07-08 13:29:50 +08:00
parent a5975e92e1
commit f862f6d46b
2 changed files with 62 additions and 13 deletions
+28 -4
View File
@@ -34,9 +34,21 @@ class search extends control
$module = empty($module) ? $this->session->searchParams['module'] : $module;
$searchParams = $module . 'searchParams';
$searchForm = $module . 'Form';
$funcName = $_SESSION[$searchParams]['funcName'] ?? '';
$funcArgs = $_SESSION[$searchParams]['funcArgs'] ?? [];
$fields = empty($fields) ? json_decode($_SESSION[$searchParams]['searchFields'], true) : $fields;
$params = empty($params) ? json_decode($_SESSION[$searchParams]['fieldParams'], true) : $params;
if($funcName)
{
$funcArgs[] = true; // 处理选项列表。
$this->loadModel($module)->$funcName(...$funcArgs);
$fields = empty($fields) ? $this->config->$module->search['fields'] : $fields;
$params = empty($params) ? $this->config->$module->search['params'] : $params;
}
else
{
$fields = empty($fields) ? json_decode($_SESSION[$searchParams]['searchFields'], true) : $fields;
$params = empty($params) ? json_decode($_SESSION[$searchParams]['fieldParams'], true) : $params;
}
$_SESSION['searchParams']['module'] = $module;
if(empty($_SESSION[$searchForm])) $this->search->initSession($module, $fields, $params);
@@ -82,9 +94,21 @@ class search extends control
$module = empty($module) ? $this->session->searchParams['module'] : $module;
$searchParams = $module . 'searchParams';
$searchForm = $module . 'Form';
$funcName = $_SESSION[$searchParams]['funcName'] ?? '';
$funcArgs = $_SESSION[$searchParams]['funcArgs'] ?? [];
$fields = empty($fields) ? json_decode($_SESSION[$searchParams]['searchFields'], true) : $fields;
$params = empty($params) ? json_decode($_SESSION[$searchParams]['fieldParams'], true) : $params;
if($funcName)
{
$funcArgs[] = true; // 处理选项列表。
$this->loadModel($module)->$funcName(...$funcArgs);
$fields = empty($fields) ? $this->config->$module->search['fields'] : $fields;
$params = empty($params) ? $this->config->$module->search['params'] : $params;
}
else
{
$fields = empty($fields) ? json_decode($_SESSION[$searchParams]['searchFields'], true) : $fields;
$params = empty($params) ? json_decode($_SESSION[$searchParams]['fieldParams'], true) : $params;
}
$_SESSION['searchParams']['module'] = $module;
if(empty($_SESSION[$searchForm])) $this->search->initOldSession($module, $fields, $params);
+34 -9
View File
@@ -28,13 +28,26 @@ class searchModel extends model
if($this->config->edition != 'open') $searchConfig = $this->searchTao->processBuildinFields($module, $searchConfig);
$searchParams['module'] = $searchConfig['module'];
$searchParams['searchFields'] = json_encode($searchConfig['fields']);
$searchParams['fieldParams'] = json_encode($searchConfig['params']);
$searchParams['actionURL'] = $searchConfig['actionURL'];
$searchParams['style'] = zget($searchConfig, 'style', 'full');
$searchParams['onMenuBar'] = zget($searchConfig, 'onMenuBar', 'no');
$searchParams['queryID'] = isset($searchConfig['queryID']) ? $searchConfig['queryID'] : 0;
$searchParams['module'] = $searchConfig['module'];
$searchParams['actionURL'] = $searchConfig['actionURL'];
$searchParams['style'] = zget($searchConfig, 'style', 'full');
$searchParams['onMenuBar'] = zget($searchConfig, 'onMenuBar', 'no');
$searchParams['queryID'] = isset($searchConfig['queryID']) ? $searchConfig['queryID'] : 0;
$funcArgs = func_get_args();
$funcName = $funcArgs[1] ?? '';
unset($funcArgs[0], $funcArgs[1]);
if($funcName)
{
$searchParams['funcName'] = $funcName;
$searchParams['funcArgs'] = $funcArgs;
}
else
{
$searchParams['searchFields'] = json_encode($searchConfig['fields']);
$searchParams['fieldParams'] = json_encode($searchConfig['params']);
}
$this->session->set($module . 'searchParams', $searchParams);
}
@@ -97,11 +110,23 @@ class searchModel extends model
/* Init vars. */
$module = $this->post->module;
$searchParams = $module . 'searchParams';
$searchFields = json_decode($_SESSION[$searchParams]['searchFields']);
$fieldParams = json_decode($_SESSION[$searchParams]['fieldParams']);
$groupItems = $this->config->search->groupItems;
$groupAndOr = strtoupper($this->post->groupAndOr);
if($groupAndOr != 'AND' && $groupAndOr != 'OR') $groupAndOr = 'AND';
$funcName = $_SESSION[$searchParams]['funcName'] ?? '';
$funcArgs = $_SESSION[$searchParams]['funcArgs'] ?? [];
if($funcName)
{
$funcArgs[] = true; // 处理选项列表。
$this->loadModel($module)->$funcName(...$funcArgs);
$searchFields = json_decode(json_encode($this->config->$module->search['fields']));
$fieldParams = json_decode(json_encode($this->config->$module->search['params']));
}
else
{
$searchFields = json_decode($_SESSION[$searchParams]['searchFields']);
$fieldParams = json_decode($_SESSION[$searchParams]['fieldParams']);
}
$queryForm = $this->searchTao->initSession($module, $searchFields, $fieldParams);