လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Diskfreespace () function return value ကိုအတိအကျဘာကိုဖော်ပြသလဲ။ အဓိပ္ပာယ်နှင့်ယူနစ်၏ဖြည့်စွက်ခွဲခြမ်းစိတ်ဖြာ

Diskfreespace () function return value ကိုအတိအကျဘာကိုဖော်ပြသလဲ။ အဓိပ္ပာယ်နှင့်ယူနစ်၏ဖြည့်စွက်ခွဲခြမ်းစိတ်ဖြာ

gitbox 2025-09-19

: Diskfreespace () (Alias ​​Disk_Free_space) (Alias ​​Disk_Free_space) ) သည်သတ်မှတ်ထားသောဖိုင်စနစ် / အခန်းကန့်ပေါ်ရှိလက်ရှိ PHP လုပ်ငန်းစဉ်သို့လက်ရှိ PHP လုပ်ငန်းစဉ်အတွက်ရရှိနိုင်သည့် bytes အရေအတွက်ကို ပြန်လည်ရရှိနိုင်ပါသည်။ Return Value ၏ယူနစ်သည် bytes ဖြစ်သည်။ ၎င်းသည် disk ပေါ်ရှိစုစုပေါင်းအခမဲ့ bytes များထက်အစက်အပြောက်များနှင့်ခွင့်ပြုချက်များကြောင့်ဖြစ်သည်။

အရေးကြီးသောအသေးစိတ်အချက်အလက်များကိုအောက်တွင်ဖော်ပြထားသောအသေးစိတ်နှင့်ဘုံအသုံးပြုမှုများကိုပေးထားသည်။


1 ။ အခြေခံအသုံးပြုမှုနှင့်ပြန်တန်ဖိုးအမျိုးအစား

 <span><span><span class="hljs-variable">$free</span></span><span> = </span><span><span class="hljs-title function_ invoke__">diskfreespace</span></span><span>(</span><span><span class="hljs-string">'/'</span></span><span>); </span><span><span class="hljs-comment">// သို့မဟုတ် disk_free_space('/path/to/dir');</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$free</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ရရှိရန်မအောင်မြင်ပါ"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ရရှိနိုင် bytes အရေအတွက်: <span class="hljs-subst">$free</span></span></span><span>\n";
}
</span></span>
  • Value Value Unit : bytes ။

  • ဖြစ်နိုင်သောပြန်လာအမျိုးအစားများ - ပုံမှန်အားဖြင့် PHP (64-bit) တွင် integer (int) (64-bit) သည် floating php (64-bit) သို့မဟုတ်အချို့သောပတ်ဝန်းကျင်တွင်သို့မဟုတ် PHP / 32-bit ပတ် 0 န်းကျင်များတွင်လျှံစီးဆင်းနိုင်သည်။ function သည်ပျက်ကွက်ခြင်းနှင့်သတိပေးခြင်းအပေါ်မှားယွင်းသောအယူ မှားသည်

  • parametersters : ဖိုင်လမ်းကြောင်းသို့မဟုတ် mount point (ဥပမာ, C: \ , / var , / mnt / mnt / share ) တွင် pass (ဥပမာ, C: \, / mnt / mnt / Share) တွင် Pass ကိုသွားပြီး HTTP / FTP နှင့်အခြား URL များ၌တိုက်ရိုက်မသွားနိုင်ပါ။


2 ။ "ရရှိနိုင်" "လုံးဝပျင်းရိ"

Diskfreespace ၏ရလဒ်သည်များသောအားဖြင့် Unix ၏ statvfs (သို့) Windows နှင့်ညီမျှသော Bytes အရေအတွက်ကိုကိုယ်စားပြုသော Unix ၏ statvfs သို့မဟုတ် Windows Equivalent ကဲ့သို့သောစနစ်ခေါ်ဆိုမှုတစ်ခု၏ရလဒ်နှင့်ညီမျှသည်။ ထို့ကြောင့်:

  • UNIX / Linux တွင်ဖိုင်စနစ်သည်အမြစ်အတွက် (5%) အလုပ်မလုပ်သည့်အပိုင်းတစ်ခုအနေဖြင့်သိုလှောင်ထားသည်။ root root use အသုံးပြုသူများသည်ဤအပိုင်းကို မြင်နိုင်ပါ။

  • PHP သည်အခွင့်ထူးမဟုတ်သောအသုံးပြုသူတစ် ဦး အနေဖြင့် run ပါက Return Value သည် Superuser အသုံးပြုနိုင်သောနေရာလွတ်များထက်အသုံးပြုသူရေးနိုင်သည့်နေရာကိုထင်ဟပ်စေသည်။

  • ကွန်ရက်တောင်ပေါ် (NFS, SMB) သို့မဟုတ်ကွန်တိန်နာ / virtual machine ပတ် 0 န်းကျင်များတွင်ပြန်လည်နေရာချထားခြင်းများအတွက်ပြန်လည်နေရာချထားခြင်းများနှင့်ကွန်တိန်နာကန့်သတ်ချက်များ (ခွဲတမ်းဆိုင်ရာကန့်သတ်ချက်များကြောင့်ပြန်လည်သက်ရောက်နိုင်သည်။

ထို့ကြောင့် - disk သည် "တကယ်" အခမဲ့ဖြစ်သည်ကိုဆုံးဖြတ်ရန်အတွက်တန်ဖိုးများကို root is round, system resolform / system resolformese settings ကိုခွင့်ပြုချက်နှင့်ပေါင်းစပ်ခြင်းအားနားလည်ရန်လိုအပ်သည်


3 ။ Disk_total_Space နှင့်ဆက်ဆံရေးနှင့်ဆက်ဆံရေး ()

Disk_total_space () အခန်းကန့်၏စုစုပေါင်း (စုစုပေါင်းစွမ်းဆောင်ရည်) စုစုပေါင်းအရေအတွက် (စုစုပေါင်းစွမ်းဆောင်ရည်) ကိုပြန်ပို့သည် အသုံးပြုမှုနှုန်းကိုနှစ်ခုကိုပေါင်းစပ်ခြင်းဖြင့်တွက်ချက်နိုင်သည်။

 <span><span><span class="hljs-variable">$path</span></span><span> = </span><span><span class="hljs-string">'/'</span></span><span>;
</span><span><span class="hljs-variable">$total</span></span><span> = </span><span><span class="hljs-title function_ invoke__">disk_total_space</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>);
</span><span><span class="hljs-variable">$free</span></span><span>  = </span><span><span class="hljs-title function_ invoke__">diskfreespace</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$total</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$free</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-variable">$used</span></span><span> = </span><span><span class="hljs-variable">$total</span></span><span> - </span><span><span class="hljs-variable">$free</span></span><span>;
    </span><span><span class="hljs-variable">$usedPercent</span></span><span> = </span><span><span class="hljs-variable">$total</span></span><span> &gt; </span><span><span class="hljs-number">0</span></span><span> ? (</span><span><span class="hljs-variable">$used</span></span><span> / </span><span><span class="hljs-variable">$total</span></span><span>) * </span><span><span class="hljs-number">100</span></span><span> : </span><span><span class="hljs-number">0</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"စုစုပေါင်းစွမ်းရည်: %s, အသုံးပြုနိုင်: %s, ဆဲ: %.2f%%\n"</span></span><span>, </span><span><span class="hljs-title function_ invoke__">formatBytes</span></span><span>(</span><span><span class="hljs-variable">$total</span></span><span>), </span><span><span class="hljs-title function_ invoke__">formatBytes</span></span><span>(</span><span><span class="hljs-variable">$free</span></span><span>), </span><span><span class="hljs-variable">$usedPercent</span></span><span>);
}
</span></span>

4 ။ ကိန်းဂဏန်းယူနစ်များနှင့်မည်သို့ပြသရန် (သာမန်အမှားအချက်များ)

disk space အတွက်အသုံးအများဆုံးယူနစ်နှစ်ခုရှိသည်။

  • binary (operating systems များတွင်အသုံးပြုလေ့ရှိသည်): 1 Kib = 1024 bytes, 1 MIB = 1024 kib = 10242 bytes, 1 gib = 10243 bytes ။

  • ဒ decimal မ (အချို့သောထုတ်လုပ်သူများသို့မဟုတ် hard disk သတ်မှတ်ချက်များ): 1 KB = 1000 bytes, 1 MB = 10002 bytes ။

PHP သည် bytes အရေအတွက်ကိုပြန်လည်ရောက်ရှိစေသည်။ အကယ်. သင်သည် "လူ့ဖတ်နိုင်သော" display တစ်ခုလိုအပ်ပါက၎င်းကို operating system tools များ ( DF -h စသည်ဖြင့်) အများအားဖြင့် binary (1024) တွင်ပြောင်းလဲလေ့ရှိသည်။

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">formatBytes</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$bytes</span></span></span><span>, </span><span><span class="hljs-variable">$precision</span></span><span> = </span><span><span class="hljs-number">2</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_numeric</span></span><span>(</span><span><span class="hljs-variable">$bytes</span></span><span>) || </span><span><span class="hljs-variable">$bytes</span></span><span> &lt; </span><span><span class="hljs-number">0</span></span><span>) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">'0 B'</span></span><span>;
    </span><span><span class="hljs-variable">$units</span></span><span> = [</span><span><span class="hljs-string">'B'</span></span><span>,</span><span><span class="hljs-string">'KiB'</span></span><span>,</span><span><span class="hljs-string">'MiB'</span></span><span>,</span><span><span class="hljs-string">'GiB'</span></span><span>,</span><span><span class="hljs-string">'TiB'</span></span><span>,</span><span><span class="hljs-string">'PiB'</span></span><span>];
    </span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
    </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$bytes</span></span><span> &gt;= </span><span><span class="hljs-number">1024</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$i</span></span><span> &lt; </span><span><span class="hljs-title function_ invoke__">count</span></span><span>(</span><span><span class="hljs-variable">$units</span></span><span>)-</span><span><span class="hljs-number">1</span></span><span>) {
        </span><span><span class="hljs-variable">$bytes</span></span><span> /= </span><span><span class="hljs-number">1024</span></span><span>;
        </span><span><span class="hljs-variable">$i</span></span><span>++;
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">round</span></span><span>(</span><span><span class="hljs-variable">$bytes</span></span><span>, </span><span><span class="hljs-variable">$precision</span></span><span>) . </span><span><span class="hljs-string">' '</span></span><span> . </span><span><span class="hljs-variable">$units</span></span><span>[</span><span><span class="hljs-variable">$i</span></span><span>];
}
</span></span>

ဥပမာ - 1073741824 bytes = 1073741824/1024 ^ 3 = 1 gib (i.e. 1Gib) ။


5 ။ ဘုံအန္တရာယ်များနှင့်အကြံပြုအလေ့အကျင့်

  1. 32-bit overflow : 32-bit PHP တွင် Bytes ၏ပိုကြီးတဲ့အရေအတွက်က အတွင်းပိုင်း အကွာအဝေးအတွင်းရှိနိမ့်ကျနေပြီးအမှားအယွင်းများသို့မဟုတ် floating point approximations များပေါ်ပေါက်လာနိုင်သည်။ 64-bit ပတ် 0 န်းကျင်တွင်လည်ပတ်ရန်သို့မဟုတ်ကြီးမားသောနံပါတ်များကိုလုပ်ဆောင်ရန် float / string ကိုသုံးရန်ကြိုးစားပါ။

  2. ပြန်လာတန်ဖိုးကိုစစ်ဆေးပါ ။ function မအောင်မြင်ပါက false untion ကိုပြန်ပို့ပါ။ အမှားအယွင်းများကိုအကဲဖြတ်ရန် (! $ free) (0 င်) သည်မှားယွင်းသောတန်ဖိုးတစ်ခုဖြစ်သောကြောင့်ဖြစ်သည်။

  3. ခွင့်ပြုချက်များနှင့်ထိန်းသိမ်းရေးလုပ်ကွက်များ - ၎င်းကို "Visible / Variused Productive သို့ရရှိနိုင်သည့်" အာကာသနှင့်အတူပြန်လာပြီဆိုတာကိုသတိပြုပါ။

  4. Network file system (NFS / SMB) - ဤတောင်များသည် Options Mounts မှမတည်မငြိမ်သို့မဟုတ်ထိခိုက်မှုများကိုပြန်လည်ပေးပို့နိုင်ပြီးတိကျသော Mount Configuration နှင့် တွဲဖက်. စစ်ဆေးသင့်သည်။

  5. လျင်မြန်စွာစောင့်ကြည့်လေ့လာခြင်း - နှိုးစက်အတွက် (ဥပမာ disk အသုံးပြုမှု> 90%) ကို သုံးပါ


6 ။ ပြီးပြည့်စုံသောဥပမာ - ရရှိနိုင်သည့်နေရာနှင့်သတိပေးချက်ကိုရာခိုင်နှုန်းဖြင့်ရယူပါ

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$path</span></span><span> = </span><span><span class="hljs-string">'/'</span></span><span>; </span><span><span class="hljs-comment">// ရှာဖွေတွေ့ရှိခံရဖို့လမ်းကြောင်း</span></span><span>
</span><span><span class="hljs-variable">$total</span></span><span> = @</span><span><span class="hljs-title function_ invoke__">disk_total_space</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>);
</span><span><span class="hljs-variable">$free</span></span><span>  = @</span><span><span class="hljs-title function_ invoke__">diskfreespace</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$total</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span> || </span><span><span class="hljs-variable">$free</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Disk Information ကိုမရနိုင်ပါ(၎င်းသည်လမ်းကြောင်းအမှားတစ်ခုသို့မဟုတ်ခွင့်ပြုချက်မလုံလောက်ခြင်းဖြစ်နိုင်သည်)\n"</span></span><span>;
    </span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);
}

</span><span><span class="hljs-variable">$used</span></span><span> = </span><span><span class="hljs-variable">$total</span></span><span> - </span><span><span class="hljs-variable">$free</span></span><span>;
</span><span><span class="hljs-variable">$usedPercent</span></span><span> = </span><span><span class="hljs-variable">$total</span></span><span> &gt; </span><span><span class="hljs-number">0</span></span><span> ? (</span><span><span class="hljs-variable">$used</span></span><span> / </span><span><span class="hljs-variable">$total</span></span><span>) * </span><span><span class="hljs-number">100</span></span><span> : </span><span><span class="hljs-number">0</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ခေြလမ်း: <span class="hljs-subst">$path</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"စုစုပေါင်းစွမ်းရည်: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">formatBytes</span></span><span>(</span><span><span class="hljs-variable">$total</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အသုံးပြုနိုင်: "</span></span><span>     . </span><span><span class="hljs-title function_ invoke__">formatBytes</span></span><span>(</span><span><span class="hljs-variable">$free</span></span><span>)  . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဆဲ: "</span></span><span>     . </span><span><span class="hljs-title function_ invoke__">number_format</span></span><span>(</span><span><span class="hljs-variable">$usedPercent</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>) . </span><span><span class="hljs-string">"%\n"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$usedPercent</span></span><span> &gt;= </span><span><span class="hljs-number">90</span></span><span>) {
    </span><span><span class="hljs-comment">// ဥပမာ Alarm Logic</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အသိပေး:disk ကိုထက်ပိုပြီးအသုံးပြုခဲ့သည် 90%!\n"</span></span><span>;
}

</span><span><span class="hljs-comment">// formatBytes အဆိုပါ function ကိုအထက်ကဲ့သို့တူညီသောဖြစ်ပါတယ်</span></span><span>
</span></span>

7 ။ အကျဉ်းချုပ် (အဓိကအချက်များကိုပြန်လည်သုံးသပ်ခြင်း)

  • Diskfreespace () disk ရှိအသုံးပြုသူများအားလုံးအသုံးပြုနိုင်သော "အကြွင်းမဲ့အာဏာ Idle ပမာဏ" ကိုထက် လက်ရှိ PHP လုပ်ငန်းစဉ်ကို ကိုယ်စားပြုသည်

  • ရလဒ်များကို File System Reserved လုပ်ကွက်များ, ခွင့်ပြုချက်များ, ခွဲတမ်းများ, ကွန်ယက်တောင်များ,

  • ပြသသည့်အခါ၎င်းကို 1024 Cardinality နှင့်အညီ kib / mib / gib သို့ပြောင်းပါ။ ၎င်းသည် operating system ၏ဘုံ display နည်းလမ်းများနှင့်ပိုမိုနီးကပ်သည်။

  • အမှားကိုကိုင်တွယ်ရန်နှင့် 32-bit ပတ် 0 န်းကျင်တွင်ကြီးမားသောနံပါတ်များကိုဂရုပြုရန် === false === false ကိုစစ်ဆေးပါ။