是否可能,从PHP执行时使用ZEND延迟INSERTS?
作者:互联网
当我有这样的循环时:
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,mysql,caching,zend-framework,zend-db 来源: https://codeday.me/bug/20190709/1415702.html