php - 是否有可能从 PHP(使用 ZEND)执行时 INSERTS 被延迟?

标签 php mysql zend-framework caching zend-db

当我有这样的循环时:

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/

相关文章:

php - 在 MySQL 数据库中发现更改时更新 HTML

javascript - 使用带有无限滚动的 ajax 的性能

Python//解析Json到MySQL

MYSQL select查询使用count(*)

zend-framework - Zend_Db_Table_Row 错误创建新行

javascript - 从 ajax 请求 (jQuery) 到 Code Igniter Controller 的 500 错误

php - 如何使用此分页代码获取页面上的项目数?

php - 使用查询语言、mysql、php 更新行

php - Zend_Mail_Storage_Pop3::removeMessage 不起作用

validation - 查看助手验证