我在自定义页面编码,预计会与zen-cart数据库进行交互。我在自定义页面中包含了所有必需的php文件。我也有自己的表'工作',不时更新。
global $db;
global $zc_cache;
$job_row = $globalHelper->getJob(1);
var_dump($job_row);
$today = date("Y-m-d H:i:s", strtotime(date("d.m.Y H:i:s")));
$query = "UPDATE job SET processedon='" . $today . "', status= 4 WHERE id = 1";
$db->Execute($query);
$job_row = $globalHelper->getJob(1);
var_dump($job_row);
unset($job_row);
令我惊讶的是,运行第三个查询并没有提供更新的数据,而是在第二个查询之前提供相同的数据。还尝试了$ zc_cache-> sql_cache_flush_cache();但没用!我从configure.php关闭了缓存。有人能告诉我这背后的原因吗?
答案 0 :(得分:1)
我遇到了同样的问题,我希望我做的以下研究可以帮到我一点:
我检查了queryFactory类代码,似乎$ db-> Execute是$ db->查询函数的某种包装器。如果先前缓存了查询,$ db->查询将从$ queryCache对象读取查询结果。
$ db->查询函数完全忽略了$ db-> Execute函数中的$ zf_cache参数,并且它没有任何参数来控制是否要读取缓存。
这两个类彼此没有业务关系,我认为这就是为什么$ zc_cache-> sql_cache_flush_cache()无法正常工作。
如果未设置$ queryCache对象,则$ db->查询仅执行新查询。我猜你必须在配置中关闭缓存才能使它“#34;不设置"。
如果你仍然需要全局缓存,但只需要在一些特殊查询上不需要缓存,我想你可以采用最古老的方式,使用mysql_query();
这听起来很愚蠢,但我太懒了,无法找到更好的解决方案,这就是我正在做的事情。
grrrrrrrrrrr