【レンタルサーバー】ディレクトリ毎のディスク容量制限は可能? - 5分 –

XSERVER

レンタルサーバーでディレクトリ毎の容量制限をかけることは、一般にできません。

しかし、簡単なスクリプトを作成し、CRONで自動実行させれば、ある程度は可能です。

このスクリプトは、指定した既定値を超えたら、そのディレクトリを書き込み不可にするものです。

PHPスクリプト

まず、以下のスクリプトをコピーし、以下の黄色の箇所を修正します。

  • 制限するディレクトりを指定
  • 何MByteで制限をかけるか?
<?php

//使用容量(バイト)

function dirSize($dir)
{
  $handle = opendir($dir);
  while ($file = readdir($handle)) {
    if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) {
      $mas += filesize($dir.'/'.$file);
    } else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') {
      $mas += dirSize($dir.'/'.$file);
    }
  }
  return $mas;
}

//数値をバイトからMB単位へ
function usedMB($dir)
{

  $dir_size = dirSize($dir);
  $dir_size = ($dir_size / 1024) / 1024;
  $dir_size = ceil($dir_size);
  return $dir_size;
}

//カレントディレクトリのMB数を調べる

$usedMbyte = usedMB("./data");  <<===== 制限するディレクトりを指定

if(Mbyte > 50)                  <<===== 何MByteで制限をかけるか?
{
  chmod('./data', 0444);
  echo "Modify permission \n";
}else{
   echo "Still okay \n";
}

CRON

先ほどのスクリプトをCRON(定期実行)で動かせば、終了です。

以下の例では、サクラのレンタルサーバーで3時間ごとにチェックして、指定した値を超えたら書き込み不可にします。CRONは、どのレンタルサーバーでも用意されているため、どこでも本機能が利用できます。