gpt4 book ai didi

php - Prestashop 清除缓存哪些文件夹受影响

转载 作者:搜寻专家 更新时间:2023-10-31 21:23:07 25 4
gpt4 key购买 nike

我搜索了很多这个问题,但没有找到 Prestashop 1.6 的正确答案,我已经制作了一个脚本来清除 Prestashop 缓存、smarty 缓存,我从 adminPerformances Controller 得到了代码,

Tools::clearSmartyCache();
Tools::clearXMLCache();
Media::clearCache();
Tools::generateIndex();

我读到它从/cache/smarty/cache 中清除了缓存,但是当执行脚本或单击性能页面中的清除缓存时,它不会从此文件夹中删除子文件夹。任何人都知道“清除缓存”会影响哪些文件夹/文件。

谢谢。

最佳答案

Prestashop 使用称为延迟缓存的系统。

这里是/classes/SmartyCustom类的clearAllCacheclearCache方法:

public function clearAllCache($exp_time = null, $type = null)
{
Db::getInstance()->execute('REPLACE INTO `'._DB_PREFIX_.'smarty_last_flush` (`type`, `last_flush`) VALUES (\'template\', FROM_UNIXTIME('.time().'))');
return $this->delete_from_lazy_cache(null, null, null);
}

public function clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
{
return $this->delete_from_lazy_cache($template_name, $cache_id, $compile_id);
}

public function delete_from_lazy_cache($template, $cache_id, $compile_id)
{
if (!$template) {
return Db::getInstance()->execute('TRUNCATE TABLE `'._DB_PREFIX_.'smarty_lazy_cache`', false);
}

$template_md5 = md5($template);
$sql = 'DELETE FROM `'._DB_PREFIX_.'smarty_lazy_cache`
WHERE template_hash=\''.pSQL($template_md5).'\'';

if ($cache_id != null) {
$sql .= ' AND cache_id LIKE "'.pSQL((string)$cache_id).'%"';
}

if ($compile_id != null) {
if (strlen($compile_id) > 32) {
$compile_id = md5($compile_id);
}
$sql .= ' AND compile_id="'.pSQL((string)$compile_id).'"';
}
Db::getInstance()->execute($sql, false);
return Db::getInstance()->Affected_Rows();
}

如您所见,缓存文件在表 smarty_lazy_cache 下的数据库中建立索引。并且缓存文件永远不会被删除,只会从表中取消索引。

关于php - Prestashop 清除缓存哪些文件夹受影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42111179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com