Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql#u fetch#u数组赢得';t循环所有结果_Php_Mysql - Fatal编程技术网

Php mysql#u fetch#u数组赢得';t循环所有结果

Php mysql#u fetch#u数组赢得';t循环所有结果,php,mysql,Php,Mysql,首先,我知道我们必须摆脱被贬低的php mysql函数,转而使用mysqli或PDO。然而,这种转变将不会在这里发生几个星期,我需要尽快让它工作 基本上,我的代码在旧服务器(PHP5.2.13)上运行良好,在新服务器(PHP5.4.20)上运行较小的查询,但对于较大的查询,只会返回部分记录集,然后。。。我想你会死吧?它死在什么记录上取决于查询,但它几乎总是死在记录10k到15k的某个范围内。我怀疑它正在消亡,因为某种php.ini设置设置了一个限制,但我不知道它会是什么。我已将代码简化为以下要点

首先,我知道我们必须摆脱被贬低的php mysql函数,转而使用mysqli或PDO。然而,这种转变将不会在这里发生几个星期,我需要尽快让它工作

基本上,我的代码在旧服务器(PHP5.2.13)上运行良好,在新服务器(PHP5.4.20)上运行较小的查询,但对于较大的查询,只会返回部分记录集,然后。。。我想你会死吧?它死在什么记录上取决于查询,但它几乎总是死在记录10k到15k的某个范围内。我怀疑它正在消亡,因为某种php.ini设置设置了一个限制,但我不知道它会是什么。我已将代码简化为以下要点:

$query = $my_query;
$result = mysql_query($query) or die(mysql_error());
$record_count = mysql_num_rows($result);

echo "Query has returned " . $record_count . " records.<br>";

$y=0;
while($row=mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "START";
    echo $y . " ";
    foreach($row as $key => $value)
    { echo $value . " "; }
    $y=$y+1;

    echo "END" . "<br>";
}
echo "GOT OUT OF THERE!";
$query=$my\u query;
$result=mysql\u query($query)或die(mysql\u error());
$record\u count=mysql\u num\u行($result);
echo“查询已返回”$记录你的人数。“记录,
”; $y=0; 而($row=mysql\u fetch\u array($result,mysql\u ASSOC)) { 回应“开始”; 回声$y.“; foreach($key=>$value的行) {echo$value.“;} $y=$y+1; 回显“结束”。
; } 埃科“离开那里!”;
是的,记录计数会回显查询返回了大约250k条记录,但在循环中它基本上会在10-15k条记录之间进行,回显最后的“结束”,但循环只是简单地停止。它不会返回到下一个“开始”,也不会返回到“离开那里!”并且,同样的代码在我们的旧服务器上运行良好,在我们的新服务器上也可以运行较小的查询


有人知道问题出在哪里吗?

可能只是超时了。通过添加以下行,可以覆盖单个脚本的服务器默认超时设置:

set_time_limit(0);
这将允许脚本永远运行。如果要设置不同的时间限制,则参数以秒为单位,因此,例如,这将允许脚本运行5分钟:

set_time_limit(300);

离死还有多久?持续30秒?嗯。。。我没有考虑时间,但是的,它可能是一致的。大约15秒左右。检查php.ini并调整
max\u execution\u time
值,或者添加一个
set\u time\u limit()
,使用更高的值查看是否允许返回更多记录。我不会完全取消时间限制,因为这是有原因的,mysql真的可以挂起你的服务器。你也可以尝试增加内存限制或刷新xx条记录,对于默认设置,html中的15K条记录可能太多了。例如
ini\u集(“内存限制”,“256M”)确定。。。是内存限制修复了它。是否将其添加到文件顶部?仍然存在问题。但是
$record\u count
是否返回正确的行数?接下来要检查的是内存限制。啊,我看你已经上了。