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

时间:2012-01-06 09:39:20

标签: php apache upload progress

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

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

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

echo "PHP_INT_MAX: " . PHP_INT_MAX;
// PHP_INT_MAX: 9223372036854775807

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

要获取信息,我只需调用扩展功能:

$status = uploadprogress_get_info($unique_form_id);

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

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" 
} 

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

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

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

1 个答案:

答案 0 :(得分:2)

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

$filesize = filesize($large_file);
printf(Filesize: %.0f\n", $filesize);

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

注意:虽然这个问题的另一个答案似乎表明Windows上没有64位整数 - 你使用的操作系统是什么?