Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在长循环期间更新进度条?_Javascript_Php_Html_Loops_Progress Bar - Fatal编程技术网

Javascript 如何在长循环期间更新进度条?

Javascript 如何在长循环期间更新进度条?,javascript,php,html,loops,progress-bar,Javascript,Php,Html,Loops,Progress Bar,如何在长循环期间更新进度条(html)(php——数据库导出/导入mysqli) 我不想使用文件或数据库来存储临时值或循环进程,因为这会导致使用太多IO(在基于文件的解决方案中,客户端通常在写入数据之前读取文件) 我考虑了一些事件类型的情况,但是输出缓冲需要太长时间才能更新显示 第二,我在考虑其他人强加的一些方法,向浏览器吐出javascript,但结果是输出了太多HTML(也就是说,转储了1000000多条记录) 基本上,我对如何在PHP中执行一些非常长的过程时更新web浏览器中的进度条持开放

如何在长循环期间更新进度条(html)(php——数据库导出/导入mysqli)

我不想使用文件或数据库来存储临时值或循环进程,因为这会导致使用太多IO(在基于文件的解决方案中,客户端通常在写入数据之前读取文件)

我考虑了一些事件类型的情况,但是输出缓冲需要太长时间才能更新显示

第二,我在考虑其他人强加的一些方法,向浏览器吐出javascript,但结果是输出了太多HTML(也就是说,转储了1000000多条记录)

基本上,我对如何在PHP中执行一些非常长的过程时更新web浏览器中的进度条持开放态度(这不是文件上传的东西——我意识到PHP有一些扩展可以获得进度,但是似乎没有任何东西可以获得服务器循环的进度)


有什么想法吗我真的不想从PHP/JavaScript/HTML转移到其他平台,如node.js/cocoa/等。

您可以在脚本执行过程中刷新内容

以下是一些有用的链接,这些链接指向可以解决您问题的好代码示例:

在本主题中,您可以在此处获得其他想法:

鉴于您上面概述的要求,我只能推荐WebSocket来实现您的目标。尽管如此,实现WebSocket对于实现这一特定解决方案来说可能是不切实际的。无论是使用
[…]文件或数据库来存储临时值[…]
,还是使用分块编码(例如分块编码),都需要在处理数据时对服务器上执行的每个步骤进行更新。您只需要在希望通知用户时更新这些值。例如,如果您处理
1000000
记录,您将永远更新状态
1000
10000
记录。@t.niese-我之前尝试过在文件写入之前执行
$x%10000
,但由于文件打开、清除、写入之间的短暂时间,客户端仍然出现读取失败(空文件),保存。看起来很有希望——这只是第一个链接。给我一点时间测试一下。这看起来绝对像是一个成功的答案。tho.#1起作用,但是——它将JavaScript输出到页面。这似乎是迄今为止最好的解决方案。你不应该只再次链接外部站点,因为它们可能会消失,而应该总结这些技术,以便读者至少能大致了解它们。所以应该是一个独立的知识库。好的建议@t.niese,我将在下一个答案中努力改进。谢谢