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

标签 php mysql

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

最佳答案

查看 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;
}

关于php - 应用程序在提取数据时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747438/

相关文章:

php - 批量导入文本文件导致 Doctrine 和 Symfony (PHP) 出现内存问题

javascript - 在 sql 和 javascript 之间交换数据

javascript - 附加选项标签与在不同选择标签中选择的值

mysql - 远程连接 MySQL 仍然无法正常工作尝试了所有常见的建议

android - 在Android中通过Restful API登录不起作用?

php - 数据表过滤器显示重复行

php - 如何更新 mysql 数据库 WHERE value = PHP 数组中的值?

php - 如何在不使用submit的情况下在php中提交下拉框值

Mysql标签查询-重复值

c# - 将日期时间格式从 csv 转换为 mysql 数据库