【问题标题】:Persistent connection: MySQL FOUND_ROWS() results持久连接:MySQL FOUND_ROWS() 结果
【发布时间】:2012-08-27 18:29:16
【问题描述】:

作为背景知识,在 MySQL 中,使用 SQL_CALC_FOUND_ROWS 标志和 FOUND_ROWS() 函数,MySQL 允许您检索如果 SELECT 不使用 LIMIT 将返回的总行数,而无需发出第二个繁重的查询:

$query =  "SELECT SQL_CALC_FOUND_ROWS * from movies
            WHERE....
            LIMIT 20";
$res1 = $db->query($query);
$numrows = $db->query('SELECT FOUND_ROWS()')->fetchColumn();

这对于分页很有用。假设您使用的是持久连接:

try{
  $db = new PDO('mysql:host=localhost;dbname=' . $dbname, $user, $pass,
        array( PDO::ATTR_PERSISTENT => true )
               );
etc.

如果两个用户几乎同时点击,有没有什么方法可以让请求跨越路径并且一个可以获取另一个请求的数据?

【问题讨论】:

    标签: php mysql pdo persistent


    【解决方案1】:

    不,这不是问题。

    就您的 PHP 页面而言,它在页面期间拥有自己的、唯一的连接。持久连接与非持久连接的唯一区别是,在页面退出后,连接不会被拆除,而是放回池中以交给其他页面。换句话说,它不是一个共享 连接,它是一个重用 连接。如果有 35 个页面同时为一个页面请求提供服务,那么仍然会有 35 个同时连接到您的数据库。

    不过,您必须小心传播连接状态(例如不完整的事务),但这是一个单独的问题。

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多