mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Change cacheMethodHashAlgo to be a method
This commit is contained in:
parent
15ccf057f4
commit
e186ffc6d3
1 changed files with 23 additions and 19 deletions
|
@ -51,35 +51,24 @@ class DboSource extends DataSource {
|
||||||
public $alias = 'AS ';
|
public $alias = 'AS ';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Caches result from query parsing operations. Cached results for both DboSource::name(), DboSource::fields() and
|
* Caches result from query parsing operations. Cached results for both DboSource::name() and DboSource::fields()
|
||||||
* DboSource::conditions() will be stored here.
|
* will be stored here.
|
||||||
*
|
*
|
||||||
* Method caching uses `md5` (by default) to construct cache keys.
|
* Method caching uses `md5` (by default) to construct cache keys. If you have problems with collisions,
|
||||||
* If you have problems with collisions, try a different hashing algorithm in DboSource::$cacheMethodHashAlgo or
|
* try a different hashing algorithm by overriding DboSource::cacheMethodHasher or set DboSource::$cacheMethods to false.
|
||||||
* set DboSource::$cacheMethods to false.
|
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
public static $methodCache = array();
|
public static $methodCache = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether or not to cache the results of DboSource::name(), DboSource::fields() and DboSource::conditions()
|
* Whether or not to cache the results of DboSource::name() and DboSource::fields() into the memory cache.
|
||||||
* into the memory cache. Set to false to disable the use of the memory cache.
|
* Set to false to disable the use of the memory cache.
|
||||||
*
|
*
|
||||||
* @var bool
|
* @var bool
|
||||||
*/
|
*/
|
||||||
public $cacheMethods = true;
|
public $cacheMethods = true;
|
||||||
|
|
||||||
/**
|
|
||||||
* Method caching uses `md5` (by default) to construct cache keys. If you have problems with collisions,
|
|
||||||
* try a different hashing algorithm or set DboSource::$cacheMethods to false.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
* @see http://php.net/manual/en/function.hash-algos.php
|
|
||||||
* @see http://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed
|
|
||||||
*/
|
|
||||||
public $cacheMethodHashAlgo = 'md5';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flag to support nested transactions. If it is set to false, you will be able to use
|
* Flag to support nested transactions. If it is set to false, you will be able to use
|
||||||
* the transaction methods (begin/commit/rollback), but just the global transaction will
|
* the transaction methods (begin/commit/rollback), but just the global transaction will
|
||||||
|
@ -803,6 +792,21 @@ class DboSource extends DataSource {
|
||||||
return static::$methodCache[$method][$key] = $value;
|
return static::$methodCache[$method][$key] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hashes a given value.
|
||||||
|
*
|
||||||
|
* Method caching uses `md5` (by default) to construct cache keys. If you have problems with collisions,
|
||||||
|
* try a different hashing algorithm or set DboSource::$cacheMethods to false.
|
||||||
|
*
|
||||||
|
* @param string $value Value to hash
|
||||||
|
* @return string Hashed value
|
||||||
|
* @see http://php.net/manual/en/function.hash-algos.php
|
||||||
|
* @see http://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed
|
||||||
|
*/
|
||||||
|
public function cacheMethodHasher($value) {
|
||||||
|
return md5($value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a quoted name of $data for use in an SQL statement.
|
* Returns a quoted name of $data for use in an SQL statement.
|
||||||
* Strips fields out of SQL functions before quoting.
|
* Strips fields out of SQL functions before quoting.
|
||||||
|
@ -828,7 +832,7 @@ class DboSource extends DataSource {
|
||||||
}
|
}
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
$cacheKey = hash($this->cacheMethodHashAlgo, $this->startQuote . $data . $this->endQuote);
|
$cacheKey = $this->cacheMethodHasher($this->startQuote . $data . $this->endQuote);
|
||||||
if ($return = $this->cacheMethod(__FUNCTION__, $cacheKey)) {
|
if ($return = $this->cacheMethod(__FUNCTION__, $cacheKey)) {
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
@ -2546,7 +2550,7 @@ class DboSource extends DataSource {
|
||||||
$Model->schemaName,
|
$Model->schemaName,
|
||||||
$Model->table
|
$Model->table
|
||||||
);
|
);
|
||||||
$cacheKey = hash($this->cacheMethodHashAlgo, serialize($cacheKey));
|
$cacheKey = $this->cacheMethodHasher(serialize($cacheKey));
|
||||||
if ($return = $this->cacheMethod(__FUNCTION__, $cacheKey)) {
|
if ($return = $this->cacheMethod(__FUNCTION__, $cacheKey)) {
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue