3 に答える
以下は、パフォーマンスに影響するコードの問題です。
print
テーブルの各行を呼び出すべきではありません。これはパフォーマンスに悪影響を及ぼします (サーバーが出力をキャッシュしていない場合) 呼び出すprint
たびにネット経由でバイトを送信するため、これはコストのかかる操作であり、データの小さなチャンクに対して何度も行うよりも、データの大きなチャンクに対して 1 回実行する方が適切です。これが、Web サーバーがすべての PHP出力をブラウザーに送信する前にキャッシュすることが多い理由です。ループの各反復で変数のコピーを回避するために、foreach で配列をトラバースするときは、配列値を参照渡しする必要があります。
ピリオドではなくコンマでエコーします。ピリオドを使用する場合、PHP は出力前に文字列を連結する必要があります。コンマを使用すると、追加の処理なしで順番に出力されます。
の代わりにエコーを使用する必要があります
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;
?>
これを試してみてください..
<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>
現在、データベース テーブル全体を php 配列に入れています。テーブルが大きい場合、応答が遅くなる可能性があります。
代わりにこれを試してください<select>
。
<?php
$query = $db->query('SELECT type FROM card_type');
while($row = $query->fetch_array()) {
print '<option value="'.$row['type'].'">'.$row['type'].'</option>';
}
?>