【问题标题】:Downloading large number of Images to my Server and notifying the User when Download is finished将大量图像下载到我的服务器并在下载完成时通知用户
【发布时间】:2026-02-06 23:55:02
【问题描述】:

我想将大量文件下载到我的服务器。我有一个要下载的不同文件的列表以及放置它们的位置。这一切都不是问题,我使用 wget 下载文件,使用 shell_exec 执行此操作

$command = 'wget -b -O' . $filenameandpathtoput . ' ' . $submission['url'];
shell_exec($command);

这很好用,服务器启动所有线程并立即下载文件。

问题是,我想在下载文件时通知用户......这不适用于我目前的做事方式。那么你将如何实现呢?

任何建议都会有所帮助!

【问题讨论】:

    标签: php download wget notifications


    【解决方案1】:

    我猜你可以用类似的东西检查所有文件是否都到位

    function checkFiles ()
    {
        foreach ($_SESSION["targetpaths"] as $p)
        {
            if (!is_file($p)) return false;
        }
        return true;
    }
    

    现在您所要做的就是在您的服务器上调用一个脚本,该脚本每秒(左右)调用一次该函数。您可以使用 Meta Refresh(强制浏览器在 n 秒后重新加载页面)或使用 AJAX(例如,查看 jQuery 的 .getJSON)来完成此操作。

    如果调用了脚本并且文件尚未全部下载,请打印“请稍候”之类的内容并稍后再次刷新。否则,显示成功消息。就是这样。

    【讨论】:

      【解决方案2】:

      您可以考虑使用exec 来运行外部wget 命令。您的 PHP 脚本将阻塞,直到外部命令完成。完成后,您可以回显已完成文件的名称。

      【讨论】:

      • 可能不是一个好主意,因为它会阻止用户浏览器,直到所有文件下载完成。这看起来像服务器刚刚冻结,导致用户刷新页面。