PDA

View Full Version : سوال: نمایش مقدار استفاده شده از هاست



amirferdowsi
چهارشنبه 01 خرداد 1387, 01:59 صبح
سلام خدمت تمامی دوستان

من میخواستم بدونم که چه جوری میشه با برنامه نویسی فهمید که چقدر از هاست اجاره شده مورد استفاده قرار گرفته شده و چقدر دیگه از اون خالی هست ؟

ممنون میشم من رو در این زمینه راهنمایی بفرمائید .

shahab_ksh
چهارشنبه 01 خرداد 1387, 02:10 صبح
یه راه اینه مثلا به شما گفته میشه 100 مگ فضا دارید حالا شما یه سرچ انجام میدین ببینید مثلا حجم دایرکتوری روت شما چقدر هست (با فایلها و دایرکتوری های زیر مجموعه) فرض کنید 70 مگ شده پس شما 30 مگ فضای خالی دارین البته این در حالتی که شما از حد اکثر حجم واقف هستید

اگه از حد اکثر حجم بی اطلاع بودید
میشه با API های نرم افزار هاستت ارتباط بر قرار کنی (که فکر نمی کنم لزومی به این کار باشه فقط یه راهه برای سوالهای مشابه سوال شما)

مثلا با فعال کردن API یکی از این کنترل پنل ها میشه از طریق وب سرویس اون به مقدار حجم یک اکانت دسترسی پیدا کرد



getQuotai(AuthToken in0, long in1)
Returns quota resource value for the account

amirferdowsi
پنج شنبه 02 خرداد 1387, 01:06 صبح
سلام
از توجه شما سپاسگذارم

من از حداکثر حجم اختصاص داده شده اطلاع دارم سوال من اینه که چه جوری میشه حجم فولدری که مربوط به سایت ما میشه رو از طریق برنامه نویسی بدست آورد ؟



شما یه سرچ انجام میدین ببینید مثلا حجم دایرکتوری روت شما چقدر هست (با فایلها و دایرکتوری های زیر مجموعه)

shahab_ksh
پنج شنبه 02 خرداد 1387, 01:15 صبح
من از حداکثر حجم اختصاص داده شده اطلاع دارم سوال من اینه که چه جوری میشه حجم فولدری که مربوط به سایت ما میشه رو از طریق برنامه نویسی بدست آورد ؟

http://www.xefteri.com/articles/show.cfm?id=12

amirferdowsi
پنج شنبه 02 خرداد 1387, 16:57 عصر
سلام
دوست عزیز من کدی که معرفی کردید رو در برنامم قرار دادم اما خطای زیر رو می گیره



'/'Failed to map the path


زمانی هم که آدرس فیزیکی یک دایرکتوری رو قرار می دم خطای زیر رو می گیره



D:\Test' is not a valid virtual path'


ممنون میشم من رو راهنمایی بفرمائید .


اینم کد برنامه :18082

shahab_ksh
جمعه 03 خرداد 1387, 02:27 صبح
اون کد ها هیچ مشکلی ندارن

باید virtual path بهش بدی


از این تابع هم میتونید استفاده کنید



Function GetFolderSize(ByVal DirPath As String, _
Optional IncludeSubFolders as Boolean = True) As Long
Dim lngDirSize As Long
Dim objFileInfo As FileInfo
Dim objDir As DirectoryInfo = New DirectoryInfo(DirPath)
Dim objSubFolder As DirectoryInfo
Try

'add length of each file
For Each objFileInfo In objDir.GetFiles()
lngDirSize += objFileInfo.Length
Next
'call recursively to get sub folders
'if you don't want this set optional
'parameter to false
If IncludeSubFolders then
For Each objSubFolder In objDir.GetDirectories()
lngDirSize += GetFolderSize(objSubFolder.FullName)
Next
End if
Catch Ex As Exception

End Try
Return lngDirSize
End Function

amirferdowsi
شنبه 11 خرداد 1387, 20:25 عصر
سلام

دوست عزیز از راهنماییتون ممنونم
من چه جوری میتونم virtual path رو بهش معرفی کنم ؟

amirferdowsi
پنج شنبه 16 خرداد 1387, 02:00 صبح
سلام
با این برنامه میشه حجم فولدرهای زیرمجموعه پروژه را گرفت ، ولی اگر بخواهیم حجم فولدر اصلی که قبل از فولدر www قرار داره رو بگیریم باید چیکار کنیم ؟

چون من می خوام حجم کلی سایت رو بگیرم یعنی هم www و هم تمامی Sub Domainهایی که معرفی شده و حجم mailboxها ، اگر با نرم افزارهای مدیریت هاست کارکرده باشید یک بخش مقدار هاست استفاده شده رو بصورت یک نمودار نمایش میده ، من میخواستم که یک همچنین برنامه ای رو روی بخش مدیریت سایت قرار بدم .

ممنون میشم که راهنمایی بفرمائید .

amirferdowsi
شنبه 12 مرداد 1387, 00:48 صبح
سلام
کسی از دوستان کد سی شارپ این برنامه یا مشابه اون رو نداره ؟

mostafa_sgh
شنبه 12 مرداد 1387, 01:06 صبح
سلام دوست عزیز


باید خدمتتون بگم که اجازه بعضی از کارها رو سیستم بهتون نمیده و یا به عبارتی دسترسی به فولدر قبل از wwwroot رو ندارید.


و اگر میبینید ارور Invalid Path دریافت می کنید به همین خاطره.


و برای فولدرهائی که بهش دسترسی دارید از متدی که دوستمون گفتن می تونید استفاده کنید.


شما برای اینکار فقط کافیه متود زیر رو فراخوانی کنید .( DirPath = VirtualPath )


مثال :

long sizeOfFolder = GetFolderSize(Server.MapPath("~/"),false);


البته اگر میخواهید حجم کل(بعلاوه کل فولدرهای داخلی) رو هم بدست بیاورید false رو به true تغییر دهید.



private long GetFolderSize(string DirPath, bool IncludeSubFolders)
{
long lngDirSize = 0;
System.IO.DirectoryInfo objDir = new System.IO.DirectoryInfo(DirPath);
try
{
//add length of each file
foreach (System.IO.FileInfo objFileInfo in objDir.GetFiles())
lngDirSize += objFileInfo.Length;
//call recursively to get sub folders
//if you don't want this set optional
//parameter to false
if (IncludeSubFolders)
{
foreach (System.IO.DirectoryInfo objSubFolder in objDir.GetDirectories())
lngDirSize += GetFolderSize(objSubFolder.FullName,true);
}
}
catch (Exception Ex) { throw new Exception(Ex.Message); }
return lngDirSize;
}


موفق باشید

amirferdowsi
شنبه 12 مرداد 1387, 03:11 صبح
سلام
دوست عزیز از راهنماییتون ممنونم ، من از این کد در صفحه استفاده کردم و یک بخش هم به اون اضافه کردم که برای نمایش فرمت سایز ( MB , GB ) استفاده میشه ، ولی نمی دونم چرا خطا میده ؟

این کد برنامه :


using System;
using System.IO;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
double folderSize = GetFolderSize(Server.MapPath("NewFolder1"));
string strSize = FormatSize(folderSize);
Response.Write(strSize);
}
private double GetFolderSize(string DirPath)
{
double lngDirSize = 0;
System.IO.DirectoryInfo objDir = new System.IO.DirectoryInfo(DirPath);
try
{
foreach (System.IO.FileInfo objFileInfo in objDir.GetFiles())
lngDirSize += objFileInfo.Length;
}
catch (Exception Ex)
{
throw new Exception(Ex.Message);
}
return lngDirSize;
}
private string FormatSize(double FileSize)
{

double KB_Size = FileSize / 1024;
double MB_Size = KB_Size / 1024;
double GB_Size = MB_Size / 1024;
if (FileSize < 1024)
{
return string.Format("{0:N0} B", FileSize);
}
else if (FileSize < 1024 * 1024)
{
return string.Format("{0:N2} KB", KB_Size);
}
else if (FileSize < 1024 * 1024 * 1024)
{
return string.Format("{0:N2} MB", MB_Size);
}
else if (FileSize >= 1024 * 1024 * 1024)
{
return string.Format("{0:N2} GB", GB_Size);
}
}
}


اینم پیغام خطا :


'_Default.FormatSize(double)': not all code paths return a value


ممنون میشم راهنمایی بفرمائید .

mostafa_sgh
شنبه 12 مرداد 1387, 03:20 صبح
دوست عزیز

شما برای توابع بازگشتی باید یک مقدار برای برگشت داشته باشید

در صورتی که در کد شما این مقدار وجود ندارد ( این مقدار باید در Block اصلی برگشت داده شود )


private string FormatSize(double FileSize)
{

string result = "0";
double KB_Size = FileSize / 1024;
double MB_Size = KB_Size / 1024;
double GB_Size = MB_Size / 1024;
if (FileSize < 1024)
{
result = string.Format("{0:N0} B", FileSize);
}
else if (FileSize < 1024 * 1024)
{
result = string.Format("{0:N2} KB", KB_Size);
}
else if (FileSize < 1024 * 1024 * 1024)
{
result = string.Format("{0:N2} MB", MB_Size);
}
else if (FileSize >= 1024 * 1024 * 1024)
{
result = string.Format("{0:N2} GB", GB_Size);
}

return result;
}


در ضمن در توابع بازگشتی مقادیر رو از بلوک هائی که امکان اجرا شدن ندارند برگشت ( Return ) ندهید .

موفق باشید

milade
شنبه 12 مرداد 1387, 09:15 صبح
حالا دوستان اگه فضای موجود رو ندونیم چی؟

mostafa_sgh
شنبه 12 مرداد 1387, 15:54 عصر
یه راه اینه مثلا به شما گفته میشه 100 مگ فضا دارید حالا شما یه سرچ انجام میدین ببینید مثلا حجم دایرکتوری روت شما چقدر هست (با فایلها و دایرکتوری های زیر مجموعه) فرض کنید 70 مگ شده پس شما 30 مگ فضای خالی دارین البته این در حالتی که شما از حد اکثر حجم واقف هستید

اگه از حد اکثر حجم بی اطلاع بودید
میشه با API های نرم افزار هاستت ارتباط بر قرار کنی (که فکر نمی کنم لزومی به این کار باشه فقط یه راهه برای سوالهای مشابه سوال شما)

مثلا با فعال کردن API یکی از این کنترل پنل ها میشه از طریق وب سرویس اون به مقدار حجم یک اکانت دسترسی پیدا کرد



getQuotai(AuthToken in0, long in1)
Returns quota resource value for the account


اگر مطلع باشید این کار رو ( محدودیت حجم ) نرم افزار هاستینگ انجام میده .

نظر دوستمون چگونگی کار رو بیان کرده.