【发布时间】:2012-01-06 01:14:20
【问题描述】:
我正在使用LOAD DATA INFILE 导入11M 记录,然后脚本继续进行其他操作。导入需要 10 分钟,此时浏览器已放弃(3 分钟后),我看不到后续操作的进度。有没有办法在这个耗时的查询运行时定期向浏览器输出一些东西。 Phpmyadmin 似乎在做这样的事情,并且浏览器不会超时。
【问题讨论】:
标签: php mysql timeout load-data-infile
我正在使用LOAD DATA INFILE 导入11M 记录,然后脚本继续进行其他操作。导入需要 10 分钟,此时浏览器已放弃(3 分钟后),我看不到后续操作的进度。有没有办法在这个耗时的查询运行时定期向浏览器输出一些东西。 Phpmyadmin 似乎在做这样的事情,并且浏览器不会超时。
【问题讨论】:
标签: php mysql timeout load-data-infile
查看 flush() (http://php.net/manual/en/function.flush.php) 或 ob_flush() (http://www.php.net/manual/en/function.ob-flush.php)。
基本上,您通常会生成输出(在这种情况下为当前状态),然后强制服务器输出当前缓冲区中的内容。
如果您的操作需要 10 分钟,您可能需要使用 set_time_limit($seconds) (http://php.net/manual/en/function.set-time-limit.php),请注意不要将其设置为很大,以防页面挂起。
如果您想每 10%(1 分钟)输出一次状态,您可以在每次刷新刷新后将超时重置为 2 分钟。这样,如果超出预期的运行时间,您的脚本将超时。
【讨论】: