0

我正在对具有超过 20MM 条目的数据库进行查询,这意味着我将查询分成几个较小的查询。

问题是如果我尝试获取页面未加载的 20MM 条目,并显示一个空白屏幕,没有标题和内容。但是,如果我获取 5MM 条目,页面会正确加载,并显示内容:

这是我的代码

for($n=0; $n<20000000; $n=$n+500000){
    $m=500000;
$query = "SELECT * FROM user_likes LIMIT ". $n .",". $m; 
//echo $query;
$result = mysql_query($query) or die(mysql_error());

// craete arrays
while($row = mysql_fetch_array($result)){
    set_time_limit(0);
    $like[$row['name']]=$like[$row['name']]+1;
    if($like[$row['name']]==375) $likes375 ++; 

}


}

// print the size
echo count($like)."<br>";
echo "375: ".$likes375; 

如果有人可以帮助我,我将不胜感激。谢谢

编辑:

添加后error_reporting(E_ALL);显示此通知:MySQL 服务器已消失

4

2 回答 2

1

这样做的原因是因为当 MySQL 正在通过其索引查找您的结果时,您的页面将是空白的。一段时间后,这将超时(取决于您的设置)。这就是为什么在较小的查询上不会发生这种情况的原因。

于 2012-09-29T23:02:49.427 回答
1

这是由于 php 脚本的执行时间限制,默认情况下 php 脚本将在超时之前运行总共 45 秒...

之后就用这个<?php

set_time_limit(0); // 0 means unlimited
  • 但不建议使用它,更好地在数据库和 php 代码逻辑上改进你的逻辑。

编辑:

尝试通过执行以下操作专门为此文件设置错误日志:

ini_set("log_errors" , "1");
ini_set("error_log" , "eorrors.txt");
ini_set("display_errors" , "0");
于 2012-09-29T23:06:37.127 回答