PHP-向客户端公开自己的大小(以便客户端知道下载了多少)

PHP-向客户端公开自己的大小(以便客户端知道下载了多少),php,sql,delphi,dynamic,size,Php,Sql,Delphi,Dynamic,Size,在Delphi桌面客户端的POST请求调用.sql文件后,我的PHP脚本将输出该文件的内容 以下是正在发生的事情: 我的桌面客户端向我的PHP脚本发送POST请求 然后脚本调用mysqldump并生成一个文件-xdb_backup.sql 然后脚本包括“xdb_backup.sql”将打印并返回到桌面客户端,然后删除SQL文件 问题是,SQL文件的大小可能不同(为了测试,我生成了一个6MB的文件)。我希望我的桌面客户端能够显示进度,但是PHP脚本没有显示它的大小,因此我没有要分配的Progres

在Delphi桌面客户端的POST请求调用.sql文件后,我的PHP脚本将输出该文件的内容

以下是正在发生的事情:

  • 我的桌面客户端向我的PHP脚本发送POST请求
  • 然后脚本调用
    mysqldump
    并生成一个文件-
    xdb_backup.sql
  • 然后脚本
    包括“xdb_backup.sql”
    将打印并返回到桌面客户端,然后删除SQL文件
  • 问题是,SQL文件的大小可能不同(为了测试,我生成了一个6MB的文件)。我希望我的桌面客户端能够显示进度,但是PHP脚本没有显示它的大小,因此我没有要分配的
    Progressbar.Max

    在整个过程结束之前,如何让我的PHP脚本让客户端知道它有多大

    注意:下载SQL文件不是一个选项,因为脚本必须销毁它。:)

    你会的

    $fsize = filesize($file_path); 
    
    其中$file_path将是生成的文件xdb_backup.sql的路径

    获取服务器中的文件大小并返回附加了以下行的标题

    header("Content-Length: " . $fsize);
    

    请看一看下载php脚本的说明。

    您必须使用
    header
    函数发送内容长度的头。大概是这样的:

    header('Content-Length:'.filesize('yourfile.sql')


    您可能希望使用
    readfile
    而不是include发送文件

    您可以使用xdb_backup.sql的大小设置内容长度标题

    我看到的唯一方法是根据数据字段的数量和大小进行粗略的近似。但是很有意思+1@Obto谢谢你的+1:)-结果是答案很简单那么,客户机在开始处理sql文件之前会知道大小吗?