PDA

View Full Version : نمایش ندادن حجم فایل بیش از 2 گیگ



amirmetal
جمعه 06 مرداد 1396, 23:30 عصر
من یه اسکریپت برای دانلود دارم فایل رو از روی سرور بهش مسیر میدم و برام میاره تو لیست دانلود سایت اما فایلهایی که حجمش 2 گیگ بیشتر باشه رو فقط 2 گیگ نشون میده.میزنم دانلود حجم رو تو دانلود منیجر درست نشون میده اما تو سایت 2 گیگ فیکس نشون میده.کمتر از 2 گیگ رو بصورت صحیح نشون میده.من بخشی از اسکریپت که حدس میزنم مشکل از اینجا باشه رو بهتون نشون میدم منتظر نظراتتون هستم.ممنون

/**
* Convert string to bytes (nK, nG, etc)
*
* @param str bytestring
* @return int bytes
*/

function decode_bytes($val) {
global $vbphrase;

if (!$val) {
$val = 0;
}

if (!preg_match("/^\s*([\d\.]+)\s*([a-z]*)\s*$/", strtolower($val), $matches)) {
return (-1);
}

$val = $matches[1];
switch($matches[2]) {
case 'g':
case 'gb':
case 'gbyte':
case 'gbytes':
case strtolower($vbphrase['ll_bytesG']):
$val *= 1024;
case 'm':
case 'mb':
case 'mbyte':
case 'mbytes':
case strtolower($vbphrase['ll_bytesM']):
$val *= 1024;
case 'k':
case 'kb':
case 'kbyte':
case 'kbytes':
case strtolower($vbphrase['ll_bytesK']):
$val *= 1024;
case strtolower($vbphrase['ll_bytes']):
case '':
break;
default:
return (-1);
}

return round($val);
}

/**
* Encode bytes as a string using K,M,G
*
* @param str bytes
* @return int bytestring
*/

function encode_bytes($val) {
$K1 = 1024; $M1 = 1024*$K1; $G1 = 1024*$M1;
if ($val>9.5*$G1) {
$res = round($val/$G1).'G';
}
elseif ($val>9.5*$M1) {
$res = round($val/$M1).'M';
}
elseif ($val>9.5*$K1) {
$res = round($val/$K1).'K';
}
else {
$res = $val;
}
return $res;
}

/**
* Encode bytes as a string using ll_bytesX phrases
*
* @param str bytes
* @param int decimal places
* @param real fraction of G,M,K values at which to use that format
* @return int bytestring
*/

function format_bytes($val, $decimal=2, $fracv=1) {
global $vbphrase;
$K1 = 1024; $M1 = 1024*$K1; $G1 = 1024*$M1;
if (!$val) {
$val = 0;
}
if ($val>=$G1*$fracv) {
return sprintf("%.".$decimal."f", $val/$G1).' '.$vbphrase['ll_bytesG'];
}
elseif ($val>=$M1*$fracv) {
return sprintf("%.".$decimal."f", $val/$M1).' '.$vbphrase['ll_bytesM'];
}
elseif ($val>=$K1*$fracv) {
return sprintf("%.".$decimal."f", $val/$K1).' '.$vbphrase['ll_bytesK'];
}
else {
return $val.' '.$vbphrase['ll_bytes'];
}
}

رضا قربانی
دوشنبه 09 مرداد 1396, 00:34 صبح
به سرویس دهنده ای که ازش هاست میگیرید تیکت بزنید و مشکلتونو بهش بگید . احتمالا تنظیمات هاسته