应用程序在提取数据时挂起

时间:2014-09-09 14:38:42

标签: php mysql

我已多次注意到了。我们在php中创建了一个前端应用程序。它可以将MySQL数据库中的数据提取到excel文件中。当我提取数据时,如果数据较少(大约1000行),它会创建一个通常大小为1-2 MB的excel文件。但每当我提取更多数据(大约100000行)时,应用程序挂起或连接超时。我必须在php.ini文件中更改一些参数吗?我认为这可能是内存分配的错误。但不确定要更改哪个参数。

1 个答案:

答案 0 :(得分:0)

查看PHP的输出缓冲区。您可以在数据可用时发送。

请查看此参考资料:http://php.net/manual/en/function.ob-start.php,以此为例http://www.andrew-kirkpatrick.com/2013/08/output-csv-straight-to-browser-using-php/

编辑:只是想一想,您可以监控数据库的状态(如果这是问题)。在MySQL客户端中,您可以反复执行此命令show processlist;以查看数据库所处的状态。如果在查询成功完成后脚本超时,则可以排除长时间运行的查询。

此外,如果您关注内存,则不应将所有数据都放在一个变量中。你应该做的就是在你获取信息时写出来。看到你的代码会有所帮助,但基本上就是这样:

while ($row = mysql_fetch_assoc($result)) {
    echo "<td>{$result['firstname']}</td>";
}

远胜于:

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