ciao, allora come prima cosa fai la scansione dei file presenti nella directory, poi file per file ti calcoli la dimensione con la funzione filesize() e sommi questa dimensione al totale.
Un problema può essere la nidificazione delle cartelle perchè filesize() restituisce la grandezza di un file, ma da come risposta 0 ad una cartella, la soluzione è una funzione ricorsiva, ovvero che chiama sè stessa, che dovrebbe funzionare in questo modo:

<<inizio>> scansione della dir data
se il file è un file aggiungo al totale la sua dimensione,
se il file è una cartella <<inizio>> scansione della cartella, ritorno dimensione totale, se non ci sono più file ritorno la dimensione totale.

ti scrivo un abbozzo di codice:
Codice PHP:
<?

function dimensione($dir)
{
$handle opendir($dir); //apro la directory

while($file readdir($handle)) //la leggo ciclicamente fino alla fine
 
if ($file != "." and $file != ".."//escludo queste 2 dir
  
if (is_dir($file))
    
$tot+=dimensione($file); //richiamo la funzione de ho trovato una dir
  
else if (is_file($file))
   
$tot+=filesize($file); //aggiungo la dimensione del file corrente
closedir($handle);

return 
$tot;
}

?>

la funzione la invochi la prima volta con argomento il nome della dir da scandire
Codice PHP:
echo "la dimensione della cartella pippo è ".dimensione("./pippo")." bytes"
e come risultato hai la dimensione totale della cartella, sottocartelle incluse..
..nonl'ho testato, ma dovrebbe funzionare, cmq mi trovi qui!
ciao!!