cache fileid's in oc_cache
This commit is contained in:
parent
6843beeae9
commit
59ab8b14c7
2 changed files with 34 additions and 3 deletions
|
@ -16,6 +16,11 @@ session_write_close();
|
|||
if($force or !OC_FileCache::inCache('')){
|
||||
if(!$checkOnly){
|
||||
OCP\DB::beginTransaction();
|
||||
|
||||
if(OC_Cache::isFast()){
|
||||
OC_Cache::clear('fileid/'); //make sure the old fileid's don't mess things up
|
||||
}
|
||||
|
||||
OC_FileCache::scan($dir,$eventSource);
|
||||
OC_FileCache::clean();
|
||||
OCP\DB::commit();
|
||||
|
|
|
@ -98,6 +98,10 @@ class OC_FileCache{
|
|||
if(OC_DB::isError($result)){
|
||||
OC_Log::write('files','error while writing file('.$path.') to cache',OC_Log::ERROR);
|
||||
}
|
||||
|
||||
if($cache=OC_Cache::getUserCache(true)){
|
||||
$cache->remove('fileid/'.$path);//ensure we don't have -1 cached
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -146,6 +150,11 @@ class OC_FileCache{
|
|||
$query=OC_DB::prepare('UPDATE *PREFIX*fscache SET parent=? ,name=?, path=?, path_hash=? WHERE path_hash=?');
|
||||
$query->execute(array($newParent,basename($newPath),$newPath,md5($newPath),md5($oldPath)));
|
||||
|
||||
if(($cache=OC_Cache::getUserCache(true)) && $cache->hasKey('fileid/'.$oldPath)){
|
||||
$cache->set('fileid/'.$newPath,$cache->get('fileid/'.$oldPath));
|
||||
$cache->remove('fileid/'.$oldPath);
|
||||
}
|
||||
|
||||
$query=OC_DB::prepare('SELECT path FROM *PREFIX*fscache WHERE path LIKE ?');
|
||||
$oldLength=strlen($oldPath);
|
||||
$updateQuery=OC_DB::prepare('UPDATE *PREFIX*fscache SET path=?, path_hash=? WHERE path_hash=?');
|
||||
|
@ -153,6 +162,11 @@ class OC_FileCache{
|
|||
$old=$row['path'];
|
||||
$new=$newPath.substr($old,$oldLength);
|
||||
$updateQuery->execute(array($new,md5($new),md5($old)));
|
||||
|
||||
if(($cache=OC_Cache::getUserCache(true)) && $cache->hasKey('fileid/'.$old)){
|
||||
$cache->set('fileid/'.$new,$cache->get('fileid/'.$old));
|
||||
$cache->remove('fileid/'.$old);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -171,6 +185,8 @@ class OC_FileCache{
|
|||
//delete everything inside the folder
|
||||
$query=OC_DB::prepare('DELETE FROM *PREFIX*fscache WHERE path LIKE ?');
|
||||
$query->execute(array($root.$path.'/%'));
|
||||
|
||||
OC_Cache::remove('fileid/'.$root.$path);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -245,9 +261,14 @@ class OC_FileCache{
|
|||
if($root===false){
|
||||
$root=OC_Filesystem::getRoot();
|
||||
}
|
||||
|
||||
$fullPath=$root.$path;
|
||||
if(($cache=OC_Cache::getUserCache(true)) && $cache->hasKey('fileid/'.$fullPath)){
|
||||
return $cache->get('fileid/'.$fullPath);
|
||||
}
|
||||
|
||||
$query=OC_DB::prepare('SELECT id FROM *PREFIX*fscache WHERE path_hash=?');
|
||||
$result=$query->execute(array(md5($root.$path)));
|
||||
$result=$query->execute(array(md5($fullPath)));
|
||||
if(OC_DB::isError($result)){
|
||||
OC_Log::write('files','error while getting file id of '.$path,OC_Log::ERROR);
|
||||
return -1;
|
||||
|
@ -255,10 +276,15 @@ class OC_FileCache{
|
|||
|
||||
$result=$result->fetchRow();
|
||||
if(is_array($result)){
|
||||
return $result['id'];
|
||||
$id=$result['id'];
|
||||
}else{
|
||||
return -1;
|
||||
$id=-1;
|
||||
}
|
||||
if($cache=OC_Cache::getUserCache(true)){
|
||||
$cache->set('fileid/'.$fullPath,$id);
|
||||
}
|
||||
|
||||
return $id;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue