diff options
author | Robin Appelman <icewind1991@gmail.com> | 2010-06-22 01:27:44 +0200 |
---|---|---|
committer | Robin Appelman <icewind1991@gmail.com> | 2010-06-22 01:27:44 +0200 |
commit | e4a83b68e905347330f8c997c8f72daefadb031e (patch) | |
tree | 234f16d51b79bd4e988747377c3a49a6ee2a175a /inc | |
parent | a9fd0c67b44ea56f1941b49ec5453f6bf82d9f19 (diff) | |
download | nextcloud-server-e4a83b68e905347330f8c997c8f72daefadb031e.tar.gz nextcloud-server-e4a83b68e905347330f8c997c8f72daefadb031e.zip |
Cache user and group id's to save some queries
Diffstat (limited to 'inc')
-rwxr-xr-x | inc/lib_user.php | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/inc/lib_user.php b/inc/lib_user.php index 99909a33213..089d0cb54a1 100755 --- a/inc/lib_user.php +++ b/inc/lib_user.php @@ -27,6 +27,14 @@ if(!$CONFIG_INSTALLED){ $_SESSION['username_clean']=''; } +//cache the userid's an groupid's +if(!isset($_SESSION['user_id_cache'])){ + $_SESSION['user_id_cache']=array(); +} +if(!isset($_SESSION['group_id_cache'])){ + $_SESSION['group_id_cache']=array(); +} + /** * Class for usermanagement * @@ -132,6 +140,9 @@ class OC_USER { */ public static function getuserid($username){ $usernameclean=strtolower($username); + if(isset($_SESSION['user_id_cache'][$usernameclean])){//try to use cached value to save an sql query + return $_SESSION['user_id_cache'][$usernameclean]; + } $usernameclean=OC_DB::escape($usernameclean); $query="SELECT user_id FROM users WHERE user_name_clean = '$usernameclean'"; $result=OC_DB::select($query); @@ -139,6 +150,7 @@ class OC_USER { return 0; } if(isset($result[0]) && isset($result[0]['user_id'])){ + $_SESSION['user_id_cache'][$usernameclean]=$result[0]['user_id']; return $result[0]['user_id']; }else{ return 0; @@ -150,6 +162,9 @@ class OC_USER { * */ public static function getgroupid($groupname){ + if(isset($_SESSION['group_id_cache'][$groupname])){//try to use cached value to save an sql query + return $_SESSION['group_id_cache'][$groupname]; + } $groupname=OC_DB::escape($groupname); $query="SELECT group_id FROM groups WHERE group_name = '$groupname'"; $result=OC_DB::select($query); @@ -157,6 +172,7 @@ class OC_USER { return 0; } if(isset($result[0]) && isset($result[0]['group_id'])){ + $_SESSION['group_id_cache'][$groupname]=$result[0]['group_id']; return $result[0]['group_id']; }else{ return 0; @@ -168,6 +184,9 @@ class OC_USER { * */ public static function getgroupname($groupid){ + if($name=array_search($groupid,$_SESSION['group_id_cache'])){//try to use cached value to save an sql query + return $name; + } $groupid=(integer)$groupid; $query="SELECT group_name FROM groups WHERE group_id = '$groupid' LIMIT 1"; $result=OC_DB::select($query); |