Php 检测下载是否完成

Php 检测下载是否完成,php,javascript,ajax,dom,mootools,Php,Javascript,Ajax,Dom,Mootools,我有一个非常简单和标准的PHP强制下载脚本 如何检查下载是否完成/何时完成以通知客户端用户?我甚至不需要实时显示进度,我只对非常具体的事件感兴趣:“下载完成时”。根据我的研究,似乎必须从服务器端确定,因为没有ondownloadready事件,而且我认为不可能拦截浏览器事件 因此,我的最佳选择似乎是使用某种客户端/服务器端交互将发送的字节与总字节进行比较。如何检查从服务器发送的PHP强制下载字节?是否有某种全局PHP变量存储这些数据,我可以用AJAX ping这些数据 <?php

我有一个非常简单和标准的PHP强制下载脚本

如何检查下载是否完成/何时完成以通知客户端用户?我甚至不需要实时显示进度,我只对非常具体的事件感兴趣:“下载完成时”。根据我的研究,似乎必须从服务器端确定,因为没有
ondownloadready
事件,而且我认为不可能拦截浏览器事件

因此,我的最佳选择似乎是使用某种客户端/服务器端交互将发送的字节与总字节进行比较。如何检查从服务器发送的PHP强制下载字节?是否有某种全局PHP变量存储这些数据,我可以用AJAX ping这些数据

    <?php

    header("Content-Type: video/x-msvideo");
    header("Content-Disposition: attachment; filename=\"".basename($realpath)."\";");

    ...

    $chunksize = 1 * (1024 * 1024); // how many bytes per chunk
    if ($size > $chunksize) {
           $handle = fopen($realpath, 'rb');
           $buffer = '';
           while (!feof($handle)) {
                 $buffer = fread($handle, $chunksize);
                 echo $buffer;
                 ob_flush();
                 flush();
           }
          fclose($handle);
     }             
     else {
         readfile($realpath);
     }
     exit();
     ?>

我需要这个的原因是:

对于我正在处理的项目,需要在下载开始后,页面重定向到(或显示)一个“下载完成时请稍候”页面。然后,一旦完成,它应该重定向到(或显示)一个“下载完成,谢谢”页面。我愿意接受其他能达到同样效果的想法。

看看这篇描述解决方案的文章

基本上,一旦while循环中断,您就完成了


下面是一个完整的线程,它描述了如何使用AJAX轮询来检测下载何时完成:

+1用于编写一个非常清晰和彻底的问题。您好,您找到解决方案了吗?我需要这个东西