簡體   English   中英

使用php來填充 <select>在網頁上。尋找更快的加載時間

[英]Using php to fill a <select> on webpage. Looking for a faster load time

我補充說:

<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你都會在網上發送字節,這是一項代價高昂的操作, 對於一大塊數據而言,最好是一次,而不是小塊的多次數據 ,這就是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數組中。 如果您的表很大,這可能會導致響應延遲。

請嘗試使用此選項,對於填充<select>

<?php
    $query = $db->query('SELECT type FROM card_type'); 
    while($row = $query->fetch_array()) { 
        print '<option value="'.$row['type'].'">'.$row['type'].'</option>';
    }
?>

試試這個......

<select>
  <option value=""></option>  
        <?php 
    include 'connect/config.php';
    include 'connect/opendb.php';
    $query = $db->query('SELECT type FROM card_type'); 
    $rows = $query->fetchAll(); 
    $select_option = '';
    foreach($rows as $row) { 
      $select_option .= '<option value="'.$row['type'].'">'.$row['type'].'</option>';
    }
    echo $select_option;
    unset($db);
    ?>
</select>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM