Donc enfaite il faudrais tuer les tâches qui écrivent dans le répértoire une fois que le quota est plein
voici le code :
function DirSize($path, $result= array()){
$sum= 0;
if(!is_dir($path) || !is_readable($path)) {
return 0;
} else {
$fd = dir($path);
while($file = $fd->read()) {
if(($file != ".") && ($file != "..")) {
if(@is_dir("$path/$file/")) {
$result= DirSize("$path/$file", $result);
} else {
$sum+= filesize("$path/$file");
}
}
}
$fd->close();
$result["$path/$file"]= $sum;
return $result;
}
}
//chez free le parametre precision de round n'est pas supporté
function free_round($val2round, $precision) {
// 3.14.15.926536, 2 314/100= 3.14
// 196204, -3 196/0.001= 196000
return(round($val2round*pow(10, $precision))/pow(10, $precision));
}
$quota_max= 100*1000*1000; // 100Mo
// pour scanner depuis le dossier en cours
$quota_root= getcwd();
// pour scanner depuis la racine
//$quota_root= $_SERVER['DOCUMENT_ROOT'];
$quota_used= DirSize($quota_root);
$quota_unite= 'Mo';
$quota_Tunite= array('Octets'=>1, 'Ko'=>1000, 'Mo'=>1000000); // calcul en Mo.
echo 'le dossier '.basename($quota_root).
' occupe '.free_round(array_sum($quota_used)*100/$quota_max, 2).' %
des '.$quota_max/$quota_Tunite[$quota_unite].' '.$quota_unite.' alloués<br />';
echo 'les '.free_round(array_sum($quota_used)/$quota_Tunite[$quota_unite], 2).' '.$quota_unite.' utilisés sont répartis comme tel :<br />';
foreach($quota_used as $key=>$val) {
echo free_round($val/$quota_Tunite[$quota_unite], 2).' '.$quota_unite.' dans '.str_replace($quota_root, '', $key).'<br />';
}
Encore merci pour ton aide