编程语言
首页 > 编程语言> > 是否可能,从PHP执行时使用ZEND延迟INSERTS?

是否可能,从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