php - Mysqli数据库PHP列表更新慢

标签 php html database mysqli

我将此 PHP 代码连接到数据库并回显电子邮件地址列表。问题是即使我正在刷新页面,它的更新速度也非常慢。我的第一个想法是浏览器缓存了信息并在那里保存了一段时间,但我添加了这个:`

  <meta http-equiv="cache-control" content="max-age=0" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="expires" content="0" />
    <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
    <meta http-equiv="pragma" content="no-cache" />`

在我的 head 标签中阻止浏览器缓存,但它没有用,列表仍然非常慢。任何帮助表示赞赏。 (抱歉有些变量是瑞典语)。

                    <?php 
                    $servername = "***********";
                    $username = "***********";
                    $password = "***********";
                    $dbname = "***********";

                    $conn = new mysqli($servername, $username, $password, $dbname);

                    if ($conn->connect_error) {
                        die("Connection failed: " . $conn->connect_error);
                    }

                    $sql = "SELECT mejl FROM mejllista";
                    $result = mysqli_query($conn, $sql);

                    if (mysqli_num_rows($result) > 0) {
                        while($row = mysqli_fetch_assoc($result)) {
                            echo "<li>" . $row["mejl"] . "</li>";
                        }
                    } else {
                        echo "0 resultat";
                    }
                    $conn->close();
                ?>

最佳答案

因此,PHP 会将循环中生成的输出(例如带有回显)存储到输出缓冲区。一旦缓冲区已满,它会将其刷新到输出 - 您的网页。

要覆盖它,您可以隐式调用 flush 和 ob_flush: http://php.net/manual/en/function.flush.php http://php.net/manual/en/function.ob-flush.php

<?php 
    $servername = "***********";
    $username = "***********";
    $password = "***********";
    $dbname = "***********";

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
       die("Connection failed: " . $conn->connect_error);
    }

    $sql = "SELECT mejl FROM mejllista";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
              echo "<li>" . $row["mejl"] . "</li>";

              //Flush the system write buffers
              flush();
              //Send the contents of the output buffer  
              ob_flush();
        }
    } else {
        echo "0 resultat";
    }
    $conn->close();
?>

在 while 循环的每次迭代中刷新写入缓冲区并将缓冲区的内容发送到页面。

享受 :)

关于php - Mysqli数据库PHP列表更新慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29669834/

相关文章:

mysql - 选择行mysql的最佳方法

php - 在MySQL数据库,PHP中存储下拉选项

javascript - 统计mysql中的重复数据

html - 我可以为同一字体定义多个字体系列名称吗?

sql-server - 如何将 Excel 连接到 SQL Server 2014

mysql - rails 将 geoip 资源保存在同一个数据库或分离的数据库中哪个更好?

php - 提出一个查询问题

php - 通过 php 按钮将表格导出到 CSV

HTML/CSS 悬停一个对象使另一个对象改变它的属性

jquery - 限制 Bootstrap 工具提示在所有页面上触发