MYSQL提取非常简单的数据,chrome浏览器响应过长,如何优化?

0.我是个刚刚学习一周的菜鸟

1.想做一个选课系统

2.选课系统需要根据时间看到不同的选课者

3.预期表格如下
clipboard.png

4.预期html文件如下
clipboard.png

5.数据库表头如下
clipboard.png

6.想要让按钮value显示出选课者的名字等等
以后实现反复点击可以取消预约等功能,
于是涉及到数据库操作,写了如下读取代码


$conn = new mysqli('127.0.0.1','root','','aaa');//指向数据库aaa
$sql = "SELECT * FROM bbb ";//SQL操作bbb表
$result = mysqli_query($conn,$sql);//提取信息
$dataCount = mysqli_num_rows($result);//信息条数计数

for ($i = 0; $i < $dataCount; $i++){
$result_arr = mysqli_fetch_assoc($result) ;
$T0000 = $result_arr['T0000'];
print_r($T0000);}//for循环对条数进行提取,事实上只有一条信息

7.虽然这个方法可以print出T0000的值,但是chrome的FFTD居然有接近1秒……
clipboard.png

8.当我用这条代码在HTML中实现按钮赋值的时候,程序就直接502错误了

<td><input type="button" name="mon0000" value="<?php echo $T0000 ?>" onclick="JS(this)"></td>

偶尔有一两次可行,但是运行时间也在好几秒之后…

但愿各位大神不吝赐教,作为新人,我是不是解决策略不对呢?

阅读 4k
3 个回答
✓ 已被采纳新手上路,请多包涵

1.经过很多努力,决定用PHP直接生成html表格,貌似是成功了。
clipboard.png

2.之前等待响应时间的问题并没有得到缓解,我更换了phpstudy的环境,确实稳定了很多,不太会再出现xampp那样突然502的情况了。

3.感谢两位的回答,虽然只寥寥几句,但对新手的帮助很大,我学会了用fetch_all遍历数据表,并且把数据以数组的方式加载到内存中以供后面读取,和我一开始的for语句提取单个值相比,效率高了很多。

4.关于我提出的502的情况,可能是html中对php代码使用的问题,导致会无响应。更换成用php生成动态表格之后,还没有出现过502问题。

5.我目前平均测试 TTFB 127.0.0.1 的环境大概在 100-800 ms 不等,已经检测过,时间花费并不是在数据库读取的部分(并且数据很少,还是不知道多了几百毫秒的原因在哪里,希望有高手继续赐教。

6.附上部分表头代码(效率可能很低,但愿有高手指导。。)


<!--PHP输出日期表头并缓存内存数组-->

<?php
$conn = new mysqli('127.0.0.1', 'root', 'root', 'test');//指向数据库aaa
$sql = "SELECT * FROM bbb ";//SQL操作bbb表
$result = mysqli_query($conn, $sql);//提取db信息
$dataCount = mysqli_num_rows($result);//信息条数计数
$allResult = mysqli_fetch_all($result, MYSQLI_ASSOC);//建立数组

*//储存内存数组 格式 Txxxx[lessonDate]*

for ($c = 0; $c < $dataCount; $c++) {

 $result_arr = $allResult[$c];
 @$D = $result_arr[lessonDate];
 echo "<th>{$D}</th>";

        for ($h = 0; $h < 24; $h++) {
        
            if ($h < 10) {
                $timeName = 'T0' . $h . '00';
            } else {
                $timeName = 'T' . $h . '00';
            };

            if (empty(@${$timeName}[$D] = $result_arr[$timeName])) {
                ${$timeName}[$D] = "FREE";
            };
        };
    }
    ?>

7.非常感谢这个平台

wordpress 肯定是有影响,
如果你机器差点或者设定给的资源小点,单开个wordpress 要一秒以上没什么奇怪的。

要测试性能的话,测试点越干净越好,chrome显示的是整页生成的时间。

你想要知道数据库耗时的话,比较简单粗略的方式是“select”之前取一次毫秒时间,
之后取一次,两次相减即可,单单包住你想测的地方。

类似:

$sql = '...';
$msc = microtime(true);
mysql_query($sql);
$msc = microtime(true)-$msc;
echo $msc . ' s'; // in seconds
echo ($msc * 1000) . ' ms'; // in millseconds

参考 https://stackoverflow.com/que...

抱歉,刚才没看好,本来想问你的数据库地址是不是127.0.0.1来着。

后来发现已经是了,于是就删掉了。
首先看看你的环境是啥,如果环境太奇葩也会造成问题。
可以试试phpstudy一键搭载,另建议改成pdo_mysql方式链接。

另外你的这种用循环读取方式不可取,
数据库常用的全部读出语句fetch_all。
像你这样请求较多的,一般根据索引适当读出数值。

初学者嘛暂时别考虑索引这类问题了,
你先试着用fetch_all把需要的数组读出来。
然后再用PHP进行过滤,这是目前需要解决的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题