当我有这样的循环时:
foreach(...) {
$r1 = $zend_db->fetchRow("SELECT ... ");
$zend_table->insert($data_array, $where);
}
... 运行几千次。 $r1
是否可能不包含在前一个循环中插入的记录?
在 http://dev.mysql.com/doc/refman/5.1/en/query-cache.html他们写道“查询缓存不返回陈旧数据。修改表时,查询缓存中的所有相关条目都会被刷新。”但也许 ZEND 会为 SELECT 或 INSERT 做一些意想不到的缓存?
我需要使用事务来解决这个问题吗?
我遇到了双重记录的问题,没有其他解释它们来自哪里。但我无法重现它,因为它发生在两个月前,导入的 csv 数据不再存在。
最佳答案
正如 drew010 在评论中所说,除非您自己实现,否则 Zend_Db 不会进行缓存。为了下次确定问题,请尝试这样的事情
try {
foreach(...) {
$r1 = $zend_db->fetchRow("SELECT ... ");
$zend_table->insert($data_array, $where);
}
} catch(Zend_Db_Exception $e)
{
$logger->log($e->getMessage(),Zend_Log::CRIT); //$logger is instance of Zend_Log
}
关于php - 是否有可能从 PHP(使用 ZEND)执行时 INSERTS 被延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10211850/