php - 使用php在网页上填充<select>。寻求更快的加载时间

标签 php mysql html select

我添加了这个:

<select>
    <option value=""></option>
    <?php include 'connect/config.php'; ?>
    <?php include 'connect/opendb.php'; ?>

    <?php
        $query = $db->query('SELECT type FROM card_type'); 
        $rows = $query->fetchAll(); 
        foreach($rows as $row) { 
        print '<option value="'.$row['type'].'">'.$row['type'].'</option>';
        }
    ?>
    <?php $db =null ?>
</select>

到我的页面,现在加载页面需要大约 5 秒的时间。

是否有更有效的方法从数据库填充选项框?

最佳答案

以下是代码中影响性能的一些问题:

  1. 您不应为表格的每一行调用print。这会受到惩罚 每次的性能(如果服务器没有缓存输出) 你调用print你将通过网络发送字节,这是一个 成本高昂的操作最好一次性完成一大块 data 而不是多次获取小数据 block ,即 Web 服务器通常会在之前缓存所有 PHP 输出的原因 将其发送到浏览器。

  2. 在遍历数组时,您应该通过引用传递数组值 带有 foreach 的数组,以避免在每个数组中复制变量 循环的迭代。

  3. 用逗号代替句号。如果 如果使用句点,PHP 必须在其之前连接字符串 输出。如果您使用逗号,它只会按顺序输出它们,而不会 额外处理。

  4. 您应该使用 echo 而不是 print()。作为一种语言构造而不是 函数中,echo 比 print() 具有轻微的性能优势。

因此,这是您的代码,已更正上述第 2、3 和 4 点,因此假设您的 Web 服务器正在缓存输出:

<?php
      $query = $db->query('SELECT type FROM card_type'); 
      $rows = $query->fetchAll(); 
      foreach($rows as &$row) { 
          echo '<option value="', $row['type'] ,'">' ,$row['type'] , '</option>';
      }
?>

这是您的代码,已更正上述第 1 点和第 2 点,因此假设您的 Web 服务器未缓存输出:

<?php
      $query = $db->query('SELECT type FROM card_type'); 
      $rows = $query->fetchAll(); 
      $out = '';
      foreach($rows as &$row) { 
          $out .= '<option value="'.$row['type'].'">'.$row['type'].'</option>';
      }
      echo $out;
?>

关于php - 使用php在网页上填充<select>。寻求更快的加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12451404/

相关文章:

php - PHP关闭所有错误,但将错误保存到error_log

mysql - Galera 集群高 Ping

php - 添加日期/时间的标准?

javascript - 页面内样式标签内的 CSS 加载,但不从外部样式表加载

html - Material 分页下拉列表不合适

jquery - 垂直轮播在大屏幕上有多个元素,但在移动 View 中带有默认 Bootstrap 的单个图像

php - 长时间运行的进程调试。斯特雷斯,布鲁克

javascript - PHPStorm(苹果机): Cannot debug --> Chrome keeps waiting for localhost

sql - MySQL 中特定表的 JOIN 中的 LIMIT 1?

java - 生成主键 : By Pulling from a stock of Ids, 保存在Web应用程序的应用层