php - 长时间运行时定期输出到浏览器

标签 php mysql timeout load-data-infile

我正在使用 LOAD DATA INFILE 导入 11M 记录,然后脚本继续执行其他操作。导入需要 10 分钟,浏览器已放弃(3 分钟后),我看不到后续操作的进度。有没有办法在这个耗时的查询运行时定期向浏览器输出一些东西。 Phpmyadmin 似乎做了这样的事情,浏览器不会超时。

最佳答案

查看 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 分钟。这样,如果超出预期的运行时间,您的脚本就会超时。

关于php - 长时间运行时定期输出到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8264324/

相关文章:

mysql - PHP MySQL 脚本出错

php - 从数据库数据计算当前年份月份的经验

php - 如何使用 php 的 SimpleXML 获取 XML 的第一个标签的名称?

php - 从记录中读取随机行 MySQL-PHP

mysql - 对首次发生后 N 天内的事件进行计数

mysql - 如何在 Node.js 中发送多个响应

javascript - 适用于 Javascript 和 PHP 的预制 XSS 预防库

php - 跟踪一个月前的结果并获取每天的结果 - MySQL

ajax - 是什么引发了 HTTP 503 以及如何更改超时?

javascript - 如何在外部安全网站上创建超时