加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

是否可能,从PHP执行时使用ZEND延迟INSERTS?

发布时间:2020-12-13 22:43:36 所属栏目:PHP教程 来源:网络整理
导读:当我有这样的循环时: 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,他们
当我有这样的循环时:

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
            }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读