【发布时间】:2021-12-28 05:54:35
【问题描述】:
我有一个允许用户将新库存添加到仓库的 php 页面。在页面上,用户可以选择位置(+/- 900 条记录)、产品(+/- 700 条记录)、连接的采购订单(1500 条+/- 记录)和客户订单(+/- 3000 条记录)。所有记录都以相同的方式在选择函数中加载(例如位置):
<select data-live-search='true' required class='selectpicker form-control border' name='wa_ra_id' value="<?php echo isset($_POST['wa_ra_id']) ? htmlspecialchars($_POST['wa_ra_id'], ENT_QUOTES) : ""; ?>">
<option selected="true" disabled="disabled" value="">Select rack...</option>
<?php
$database = new Database();
$db = $database->getConnection();
$query = "SELECT
ra_id,
ra_number,
ra_section,
ra_zone
FROM racks
ORDER BY ra_number";
$stmt = $db->prepare($query);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
extract($row);
echo "<option value='{$ra_id}'>{$ra_number}{$ra_section}{$ra_zone}</option>";
}
?>
</select>
当前的问题是加载时间。当前加载时间在 11000 到 12000 毫秒之间,而 mysql 中每个查询的查询加载时间为 0.020 毫秒。有没有办法减少php的加载时间?
【问题讨论】:
-
您尝试过检查哪个部分对这么长的持续时间负责?在单个选择字段中包含 3000 多个元素看起来非常不可用 - 也许您想使用一些与 AJAX 相关的方法来通过用户输入过滤列表?
-
避免使用具有数百或数千个选项的选择。改用 ajax 自动完成控件,它根本不需要任何数据来加载表单页面
-
不是单独获取每条记录,而是使用
->fetchAll()一次性获取所有记录