我正在使用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在属性窗口中所说的相比,返回的数字远远低于实际总字节数。
答案 0 :(得分:2)
使用浮点数并删除小数 - 这适用于这些较大的数字:
$filesize = filesize($large_file);
printf(Filesize: %.0f\n", $filesize);
此答案将确认您是否使用64位整数:how to have 64 bit integer on PHP?
注意:虽然这个问题的另一个答案似乎表明Windows上没有64位整数 - 你使用的操作系统是什么?