A5下载文章资讯

分类分类

ecshop站点目录和数据库大小补丁

2015-04-20 09:25作者:zhao

PHP目前不提供获取目录总大小的标准函数,尽管这比获得磁盘总空间更为常见,虽然可以使用exec()或system()做系统级调用du,du命令将 获得一个文件或目录的磁盘使用情况,但出于安全原因,这些函数通常是禁用的。要获得站点目录大小,使用递归适合此项任务。本补丁可在ECSHOP后台查看 站点目录和数据库大小。

 

 一、/admin/index.php

$sys_info['socket'] = function_exists('fsockopen') ? $_LANG['yes'] : $_LANG['no'];

下面添加

/* 单位自动转换函数 */

function getRealSize($size)

{

$kb = 1024; // Kilobyte

$mb = 1024 * $kb; // Megabyte

$gb = 1024 * $mb; // Gigabyte

$tb = 1024 * $gb; // Terabyte

if($size < $kb)

{

return $size . ' B';

}

else if($size < $mb)

{

return round($size/$kb, 2) . ' KB';

}

else if($size < $gb)

{

return round($size/$mb, 2) . ' MB';

}

else if($size < $tb)

{

return round($size/$gb, 2) . ' GB';

}

else

{

return round($size/$tb, 2) . ' TB';

}

}

/* 站点目录大小 */

function getDirSize($dir)

{

$sizeResult = 0;

$handle = opendir($dir);

while (false !== ($FolderOrFile = readdir($handle)))

{

if($FolderOrFile != '.'&& $FolderOrFile != '..')

{

if(is_dir("$dir/$FolderOrFile"))

{

$sizeResult += getDirSize("$dir/$FolderOrFile");

}

else

{

$sizeResult += filesize("$dir/$FolderOrFile");

}

}

}

closedir($handle);

return $sizeResult;

}

$curStr = dirname(__FILE__);

$subStr = strrchr($curStr, '');

$siteDir = substr($curStr, 0, strlen($curStr)-strlen($subStr));

$disk_size = getRealSize(getDirSize($siteDir));

/* 数据库大小 */

$ret = $db ->query("SHOW TABLE STATUS LIKE '" . mysql_like_quote($ecs->prefix) . "%'");

$row = array();

$mysql_size = 0;

while ($row = $db->fetchRow($ret))

{

$mysql_size += $row['Data_length'];

}

$mysql_size = getRealSize($mysql_size);

unset($ret);

$smarty->assign('disk_size', $disk_size);

$smarty->assign('mysql_size', $mysql_size);

二、/admin/templates/start.htm

<tr>

<td>{$lang.php_version}</td>

<td>{$sys_info.php_ver}</td>

<td>{$lang.mysql_version}</td>

<td>{$sys_info.mysql_ver}</td>

</tr>

下面添加
{$lang.disk_size} {$disk_size} {$lang.mysql_size} {$mysql_size}

三、/languages/zh_cn/admin/index.php中添加

$_LANG['disk_size'] = '站点目录大小:';

$_LANG['mysql_size'] = '数据库大小:';

展开全部

相关

说两句网友评论
    我要跟贴
    取消