我想用mysql xampp通过sql查询获取100000条记录并保存在一个数组中,但它甚至不能获取16000条记录并停止或显示

pokxtpni  于 2021-06-20  发布在  Mysql
关注(0)|答案(5)|浏览(203)

致命错误:在c:\xampp\htdocs\maprouting\routing.php中超过了30秒的最大执行时间
是的,我可以设置最长的执行时间,但我希望在mysql中,当一个人点击表时,它会给出结果,例如显示第0-24行(总共16037行,查询耗时0.0032秒)

$link = mysqli_connect("localhost","root","","example");

if (mysqli_connect_error()) {
    echo "error";
}

$rows = array();
$count = 0;

for ($J=0; $J <= 3; $J++) { 
    $count = $count + 4000;

    for ($i = 1; $i <= $count; $i++) {
        $offset_var = $i - 1;   
        $query = "select id from shipment Limit 1 OFFSET ".$offset_var;
        $result = mysqli_query($link, $query);

        while ($row = mysqli_fetch_assoc($result)) {
            $rows[] = $row;
        }
    }
}

mysqli_close($connection);  
echo "<pre>";print_r($rows);echo "</pre>";
agyaoht7

agyaoht71#

不确定您对这段代码的确切要求是什么,但您的查询效率似乎很低。您运行的查询太多,每个查询只能获取一行。

select id from shipment Limit 1 OFFSET 0
    select id from shipment Limit 1 OFFSET 1
    select id from shipment Limit 1 OFFSET 2
    select id from shipment Limit 1 OFFSET 3
    select id from shipment Limit 1 OFFSET 4
    select id from shipment Limit 1 OFFSET 5
    ...

你自己试试看

//$link=  mysqli_connect("localhost","root","","example");
//if (mysqli_connect_error()) {
//    echo "error";
//}
$rows=array();
$count=0;
for( $J=0; $J<=3; $J++) {
    $count = $count + 10;
    for($i=1;$i<=$count;$i++) {
         $offset_var=$i-1;
         $query="select id from shipment Limit 1 OFFSET " . $offset_var;
         //$result=  mysqli_query($link, $query);
         //while ($row = mysqli_fetch_assoc($result)) {
         //    $rows[]= $row;
         //}
         echo $query."\n";
    }
}
//mysqli_close($connection);
//echo "<pre>";print_r($rows);echo "</pre>";

如果要运行查询以每页/查询获得4000个结果?
接下来的代码将在26个查询中实现这一点

$link=  mysqli_connect("localhost","root","","example");
if (mysqli_connect_error()) {
    echo "error";
}
$rows=array();
$page_size=4000;
$total_records=100000;

$count=ceil($total_records/$page_size);
for($i=0; $i<=$count; $i++) {
   $offset_var = $i * $page_size;
   $query = "select id from shipment Limit ".$page_size." OFFSET ".$offset_var;
   $result=  mysqli_query($link, $query);
     while ($row = mysqli_fetch_assoc($result)) {
       $rows[]= $row;
     }
}
mysqli_close($connection);
echo "<pre>";print_r($rows);echo "</pre>";
vxqlmq5t

vxqlmq5t2#

更新 max_execution_time 在php.ini中设置为600秒
或者你也可以用php更新它。

ini_set('max_execution_time', 600);

在这里 600 时间单位为秒/10分钟。

yfwxisqw

yfwxisqw3#

使用下面的函数。

set_time_limit(0);

最长执行时间,以秒为单位。如果设置为零,则不施加时间限制。
欲了解更多信息,请访问此链接设置\时间\限制。

gr8qqesn

gr8qqesn4#

根据你table的大小,听起来你只是没有足够的时间把10万行带回来。
尝试增加执行时间限制?

ini_set('max_execution_time', 300);

这将给它5分钟的执行时间。

wgeznvg7

wgeznvg75#

默认情况下,php脚本的最大执行时间设置为30秒。如果脚本运行时间超过30秒,php会停止脚本并报告错误。您可以通过更改php.ini文件中的max\u execution\u time指令来控制php允许脚本运行的时间量。
要更改最大执行时间,请使用文本编辑器修改php.ini文件中的max\ u execution\ u time指令。例如,要将最大执行时间设置为600秒(10分钟),请使用以下设置:

max_execution_time = 600

此修改必须在php.ini文件中完成

相关问题