毎日のWeb開発では、サーバーのストレージスペースを管理することは非常に重要なタスクです。 PHPは非常に便利な機能disk_free_space()を提供します。これにより、サーバーディスクの残りのスペースをすばやく表示できます。この記事では、この関数を使用してディスクの残りのスペースを取得する方法と、実際のプロジェクト要件と組み合わせて適用する方法を紹介します。
disk_free_space()は、指定されたディレクトリが存在するディスクパーティションのバイトで空きスペースを返すphpの内蔵機能です。現在、どのくらいの空きスペースがディスクパーティションに残っているかを知りたい場合は、この機能を通じて簡単に取得できます。
関数の基本的な構文は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">disk_free_space</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$directory</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>$ディレクトリ:指定されたディレクトリパス。このディレクトリは、任意のディスクパーティションのパスにすることができ、通常、 /またはc: /などのディレクトリパスを渡します。
戻り値は、バイト単位のディスクの自由空間を表す整数です。エラーが発生した場合、関数はfalseを返します。
サーバーのルートディレクトリ/ディスクの残りのスペースを表示すると、次のコードを使用できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/'</span></span><span>;
</span><span><span class="hljs-variable">$freeSpace</span></span><span> = </span><span><span class="hljs-title function_ invoke__">disk_free_space</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$freeSpace</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">"残りの空きスペース: "</span></span><span> . </span><span><span class="hljs-variable">$freeSpace</span></span><span> . </span><span><span class="hljs-string">" バイト"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>上記のコードを実行すると、ルートディレクトリがあるディスクに空きスペースがある場合、 $ freespaceはそのディスクのバイトの残りのスペースを返します。エラーが発生した場合、関数はfalseを返し、これに基づいて情報が正常に取得されたかどうかを判断できます。
disk_free_space()はバイト数を返しますが、実際のアプリケーションでは、通常、MBやGBなどのより理解しやすいユニットに変換する必要があります。この変換を実装するために、それを実装するための単純な関数を書くことができます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">formatSize</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$size</span></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">'KB'</span></span><span>, </span><span><span class="hljs-string">'MB'</span></span><span>, </span><span><span class="hljs-string">'GB'</span></span><span>, </span><span><span class="hljs-string">'TB'</span></span><span>];
</span><span><span class="hljs-variable">$unitIndex</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">$size</span></span><span> >= </span><span><span class="hljs-number">1024</span></span><span> && </span><span><span class="hljs-variable">$unitIndex</span></span><span> < </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">$size</span></span><span> /= </span><span><span class="hljs-number">1024</span></span><span>;
</span><span><span class="hljs-variable">$unitIndex</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">$size</span></span><span>, </span><span><span class="hljs-number">2</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">$unitIndex</span></span><span>];
}
</span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/'</span></span><span>;
</span><span><span class="hljs-variable">$freeSpace</span></span><span> = </span><span><span class="hljs-title function_ invoke__">disk_free_space</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$freeSpace</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">"残りの空きスペース: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">formatSize</span></span><span>(</span><span><span class="hljs-variable">$freeSpace</span></span><span>);
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>formatize()関数を介して、バイト数をKB、MB、GBなどのより理解しやすいユニットに変換できます。
いくつかのシナリオでは、開発者は、ディスクスペースが不十分であることによるサービスの中断を回避するために、残りのディスクスペースを定期的に監視する必要がある場合があります。タイミングタスクをセットアップすることにより、上記のPHPスクリプトを定期的に実行するか、アプリケーションにディスクスペース監視ロジックを追加できます。
たとえば、Webアプリケーションの背景にタイムされたタスクを追加し、定期的にディスクスペースをチェックし、残りのスペースが特定のしきい値を下回っている場合は管理者に警告通知を送信できます。
PHPのdisk_free_space()関数を使用すると、ディスクの残りのスペースを簡単に取得でき、時間内にストレージスペースが不十分な問題を発見し、システムのクラッシュやサービスの中断を回避できます。実際のアプリケーションでは、タイミングタスクと空間しきい値設定を組み合わせることで、Webアプリケーションのより堅牢なストレージ監視メカニズムを提供できます。