【问题标题】:Echo strings when page is still downloading页面仍在下载时回显字符串
【发布时间】:2015-02-11 13:47:30
【问题描述】:

我正在尝试制作一个 PHP 下载器。

echo '<p>Downloading New Update</p>';
$newUpdate = file_get_contents('http://your-server.com/update.zip');
echo 'Done downloading';

当我运行脚本时(说 zip 需要很长时间才能下载),页面加载直到完全下载,然后同时显示 Downloading New UpdateDone downloading

我想要的是在完成下载之前显示Downloading New Update。当它出现时,Done downloading 必须出现。

如何将此脚本与 Ajax、Jquery、Javascript 结合使用,以创建更动态的下载器?

【问题讨论】:

  • 创建一个div,说首先下载更新,然后使用ajax获取数据并将div文本设置为Done Downloading。简单
  • 您可以在此处找到更多信息:w3schools.com/php/php_ajax_intro.asp。如果您需要进一步的帮助,请回复:)
  • 我不能用类似的东西:xmlhttp.open("GET","download_script.php",true); xmlhttp.send(); ??
  • 这可行,但如果您想向用户显示信息,则需要详细说明,如果您想保持简单,@Peter K 建议是不使用 JS/Ajax 的选项。

标签: javascript php jquery file-get-contents


【解决方案1】:

简单的刷新可能会解决问题

echo '<p>Downloading New Update</p>';
flush();
$newUpdate = file_get_contents('http://your-server.com/update.zip');
echo 'Done downloading';

并且您需要确保此文本不在表格内。 然后浏览器应该使用渐进式渲染并且文本应该真正出现。 您需要刷新的原因是 PHP 实际上不会将文本从 echo() 发送到浏览器,直到满足某些条件,例如脚本完成或 flush() 被显式调用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多