Php ZenCart数据库中的延迟更新

Php ZenCart数据库中的延迟更新,php,mysql,zen-cart,Php,Mysql,Zen Cart,我在一个定制页面中编码,该页面预计将与zen cart数据库交互。我在自定义页面中包含了所有必要的php文件。我也有自己的表“job”,它会不时更新 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

我在一个定制页面中编码,该页面预计将与zen cart数据库交互。我在自定义页面中包含了所有必要的php文件。我也有自己的表“job”,它会不时更新

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关闭了缓存。有谁能告诉我这背后的原因吗?

我也遇到了同样的问题,我希望我所做的以下研究能有所帮助:

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

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

$queryCache是类query\u缓存的一个实例, $zc_缓存是类缓存的一个实例

这两个类彼此没有任何关系,我想这就是$zc\u cache->sql\u cache\u flush\u cache()不起作用的原因

如果未设置$queryCache对象,$db->query仅执行新查询。我猜您必须关闭配置中的缓存以使其“未设置”

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

这听起来很愚蠢,但我太懒了,没有找到更好的解决办法,这就是我正在做的


你说得对!如果第二次运行查询时对上一次查询略有更改,则会得到更新的记录。