Scusa, ma tu hai una funzione che crea il grafico a partire da dei parametri e cosa restituisce? dati binari?
Allora fai un codice di questo tipo

Codice PHP:
$bindata creagrafico($parametri);
// scrittura sul file
$handler fopen($filename"wb");
fwrite($handler$bindata);
fclose($handler);

echo 
"[img]$filename[/img]"
L'unica cosa se i grafici sono grandi, ogni tanto preoccupati di cancellare quelli vecchi.

Secondo me è la soluzione più eficiente, io avevo fatto una cosa simile alla tua con delle immagini recuperate da un database, ma se il file superava il mega di grandezza, il risultato era uno schifo, ci metteva una cifra a dare l'immagine sullo schermo anche in locale, perciò ho optato per questa soluzione.