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

标签 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 在属性窗口中显示的相比,返回的数字与实际总字节数相去甚远。

最佳答案

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

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

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

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

关于PHP 扩展上传进度 - 返回负总字节数和剩余时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8755886/

相关文章:

php - 在动态数据库上运行用户 SQL 命令

php - docker 卷和 apache 权限

iphone - FBConnect 和个人上传电子邮件地址

javascript - Amazon s3 Javascript-请求的资源上不存在 'Access-Control-Allow-Origin' header

java - 如何创建所有 Android 设备通用的相机 Action

php - 无法将我的记录插入数据库?

php - 登录网站并通过 PHP 下载文件

php - Laravel Blade 模板 : combine string with variable from controller for @yield parameter

javascript - Chrome WebSocket 连接立即关闭

regex - 当我向 Htaccess 添加点运算符时出现一些错误