PHP扩展上传进度 - 返回负的总字节数和剩余时间

dig*_*rld 7 php apache upload progress

我正在使用PHP上传进度扩展来检索有关上传到我的网络系统的文件的信息.但是,对于大于2GB的文件,总字节数和剩余时间字段将作为负数返回.

已设置Apache以确保可以将大小高达3GB的文件上载到网站.我测试了这个并且它有效.然而,这纯粹是报告错误地回归.

我想知道这是否与PHP值的限制有关,以及可以采取哪些措施来解决它.我相信系统使用的是64位整数.如下所示:

echo "PHP_INT_MAX: " . PHP_INT_MAX;
// PHP_INT_MAX: 9223372036854775807
Run Code Online (Sandbox Code Playgroud)

以下是有关进度条如何工作和安装的一些额外信息:http://www.ultramegatech.com/blog/2010/10/create-an-upload-progress-bar-with-php-and-jquery/

要获取信息,我只需调用扩展函数:

$status = uploadprogress_get_info($unique_form_id);
Run Code Online (Sandbox Code Playgroud)

返回总字节数,剩余时间,当前字节数等,如下所示(总字节数为负):

array(11) { 
    ["upload_id"]=> string(32) "ec75a30c24177ec1579aea93b56224f2" 
    ["fieldname"]=> string(9) "comp_data" 
    ["filename"]=> string(15) "Size_2-09GB.zip"
    ["time_start"]=> string(10) "1325851749"
    ["time_last"]=> string(10) "1325851758"
    ["speed_average"]=> string(5) "93011"
    ["speed_last"]=> string(6) "112618"
    ["bytes_uploaded"]=> string(6) "837105" 
    ["bytes_total"]=> string(11) "-2048166056" 
    ["files_uploaded"]=> string(1) "1" 
    ["est_sec"]=> string(9) "-76260228" 
} 
Run Code Online (Sandbox Code Playgroud)

更新(2012年1月6日):我还联系了此扩展程序的开发人员,看看他们是否可以分享任何见解.

更新(2012年1月9日):扩展程序的开发人员已回复指出有关此问题的现有票证:https://bugs.php.net/bug.php?id = 59918

更新(2012年1月16日):已设法摆脱扩展返回的负值.但是,与Windows在属性窗口中所说的相比,返回的数字远远低于实际的总字节数.

Man*_*eUK 2

使用浮点数并删除小数 - 这适用于这些较大的数字:

$filesize = filesize($large_file);
printf(Filesize: %.0f\n", $filesize);
Run Code Online (Sandbox Code Playgroud)

这个答案将确认您是否使用 64 位整数:how to have 64 bit integer on PHP?

注意:尽管该问题还有另一个答案,似乎表明 64 位整数在 Windows 上不可用 - 您使用的是什么操作系统?