Bonjour,
Je cherche à faire des optimisations sur un plugin en utilisant le cache qui a l’air de faire ce que je souhaite à savoir mémoriser des choses durant un certain temps. Je précise que je n’ai pas encore testé en détail mais me pose des questions après avoir regardé le code.
La classe cache
a une fonction set($_key, $_value, $_lifetime = 0, $_options = null)
qui m’intéresse beaucoup. $_lifetime
est en quelle unité ?
Cette même classe a une fonction hasExpired()
qui ne prend pas de paramètres et qui retourne toujours true
:
public function hasExpired(): bool {
return true;
}
Je suis quelque peu décontenancé… Cette fonction est un placeholder et n’a jamais été écrite ?
D’après ce que j’ai vu la fonction set
fait un save
qui fait un setDateTime
. La fonction hasExpired()
devrait donc comparer la date et l’heure actuelle avec la date obtenue avec getDateTime
+ le lifetime (ou en utilisant la fonction php strtotime("+${lifetimme}unité_du_lifetime")
).
J’ai vérifié : utils::setJsonAttr
qui est utilisée pour lire une valeur en cache ne vérifie pas DateTime non plus.
Soit je ne sais pas quelque chose concernant le cache qui a été défini il y a longtemps, soit j’ai loupé un truc, soit la fonction hasExpired
doit être modifiée. J’ai déjà recherché sur le community mais n’ai rien trouvé.
Merci pour vos lumières.
A+
Michel
edit: le lifetime est géré par le moteur de cache \Doctrine\Common\Cache.… ?
Suite à la lecture de ces lignes (vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php) :
/**
* Puts data into the cache.
*
* If a cache entry with the given id already exists, its data will be replaced.
*
* @param string $id The cache id.
* @param mixed $data The cache entry/data.
* @param int $lifeTime The lifetime in number of seconds for this cache entry.
* If zero (the default), the entry never expires (although it may be deleted from the cache
* to make place for other entries).
*
* @return bool TRUE if the entry was successfully stored in the cache, FALSE otherwise.
*/
public function save($id, $data, $lifeTime = 0);
j’ai essayé de faire un sve avec un lifetime en secondes (9 minutes et 50 secondes). Et bien après le temps (10 minutes), le cache retourne la valeur stockée.