更新 Jquery 进度条,同时读取 txt 文件(从 php)


Update Jquery progress bar, while reading txt file (from php)

我有一个 100.000 行的 txt 文件,我需要读取它才能将大部分插入我的数据库。我想使用这个插件,因为我发现它非常易于使用:

http://www.bram.us/projects/js_bramus/jsprogressbarhandler/#download

我的问题是:我用 PHP 阅读了 txt 文件,但我不了解如何更新进度条!我在想这样的事情

echo '$("#progressbar").progressbar({ value: '.($k++).' });';

$k从 0 到 100 的位置,但是,我必须把它放在哪里?

我找到了这种方法:

http://spidgorny.blogspot.it/2012/02/progress-bar-for-lengthy-php-process.html

我认为这可以帮助对代码进行一些编辑。

你不可能混合使用 php 和 javascript:

  1. PHP 将运行并生成一个 HTML/JS 文件
  2. HTML/JS 文件将被发送到客户端
  3. 客户端将运行 JS: $("#progressbar").progressbar({ value: XX });

所以k将是静态的。

--

如果你真的想轻松地做这样的事情,你可以使用一个中间数据库表,有三列:txt_file、位置、长度并且经常在 PHP 脚本在 txt 文件上运行时更新此表。

客户端,在 Javascript 中,你可以使用 jQuery 发出一个 ajax 请求,例如每 5 或 10 秒一次,这将调用另一个 PHP 页面,而这个 PHP 页面只会从中间表中返回相应的行。获得结果后,您可以更新进度条。

--

这是为您实现的最简单的解决方案,但它仍然非常脏,并且txt文件的解析最好必须很长!

没有直接的方法来实现这一点。PHP 脚本首先执行,然后将输出发送到查看网页的客户端,这就是为什么您无法向客户端显示 PHP 脚本处理的实时状态的原因。

您必须结合使用 AJAX 和数据库:

创建一个表来跟踪文本文件的加载进度。每当用户(客户端)向页面发送请求时,请继续使用进度更新表。使用会话 ID 作为表上的索引,以便轻松跟踪每个客户端的进度。现在,使用 AJAX 请求从表中获取进度,并将其与进度栏一起呈现给客户端。