ZenCart数据库中的延迟更新

时间:2014-02-04 16:27:24

标签: php mysql zen-cart

我在自定义页面编码,预计会与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关闭了缓存。有人能告诉我这背后的原因吗?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我希望我做的以下研究可以帮到我一点:

我检查了queryFactory类代码,似乎$ db-> Execute是$ db->查询函数的某种包装器。如果先前缓存了查询,$ db->查询将从$ queryCache对象读取查询结果。

$ db->查询函数完全忽略了$ db-> Execute函数中的$ zf_cache参数,并且它没有任何参数来控制是否要读取缓存。

$ queryCache是​​类query_cache的一个实例, $ zc_cache是​​类缓存的实例

这两个类彼此没有业务关系,我认为这就是为什么$ zc_cache-> sql_cache_flush_cache()无法正常工作。

如果未设置$ queryCache对象,则$ db->查询仅执行新查询。我猜你必须在配置中关闭缓存才能使它“#34;不设置"。

如果你仍然需要全局缓存,但只需要在一些特殊查询上不需要缓存,我想你可以采用最古老的方式,使用mysql_query();

这听起来很愚蠢,但我太懒了,无法找到更好的解决方案,这就是我正在做的事情。

grrrrrrrrrrr