php - mysql_fetch_array 不会遍历所有结果

标签 php mysql

首先,我知道我们必须摆脱折旧的 php mysql 函数并转移到 mysqli 或 PDO。然而,这种转变在几周内不会在这里发生,我需要尽快让它发挥作用。

基本上,我的代码在我们的旧服务器 (PHP 5.2.13) 上运行良好,在我们的新服务器 (PHP 5.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!";

是的,record_count 将回显查询返回了大约 250k 条记录,但在循环中它基本上会在 10-15k 条记录之间的某处执行,回显最后的“END”,但随后循环就停止了。它不会回到下一个“开始”,也不会到达“离开那里!”同样,同样的代码在我们的旧服务器上运行良好,在我们的新服务器上运行更小的查询。

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

最佳答案

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

set_time_limit(0);

这将使脚本永远运行。如果您想设置不同的时间限制,参数以秒为单位,例如,这将允许脚本运行 5 分钟:

set_time_limit(300);

关于php - mysql_fetch_array 不会遍历所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23120109/

相关文章:

php - 如何获取每个用户的所有帖子?

php - 高级自定义字段获取子字段图像

php - 用于处理主题演讲的 Python/PHP 库

python - 类型错误 : not enough arguments for format string - Python SQL connection while using %Y-%m

mysql - MYSQL 中的 session 变量名称在 CONCAT 语句中逐字复制(而不是其值)

mysql - 如何为此查询执行内部联接

php - 在 html 设计中插入页面

带有两个查询的 PHP MySQL

php - 如何在html表中打印具有 "one to many"关系的两个表的列?

mysql - 将日期行转换为sql中的列