Symfony Cache im RAM

Symfony ist spätestens seit Version 2.6 ein ziemlich cooles Web-Framework, das so ziemlich alles mitbringt, um unter PHP seine Webseiten zu entwickeln. Leider hat es auch ein gehöriges Manko: Es werden Unmengen an Cache-Dateien angelegt, die vorzugsweise den Ordner vollmüllen, die Webseite (bei V-Servern) ziemlich runterbremsen und nebenbei noch bei Backups die Archive aufblähen. Die Schöpfer von Symfony haben das auch erkannt und seit Version 2.6 die Möglichkeit geschaffen, bestimmte Verzeichnisse zu verlegen.

Welche Verzeichnisse sind überhaupt betroffen? Primär geht es um das Cache-Verzeichnis unter project/var/cache. Zusätzlich möchte man in der DEV-Umgebung unter Umständen noch die Log-Dateien nicht mehr unter project/var/logs haben. Praktischerweise lässt sich das ganze mit wenigen Zeilen realisieren.

Aber wohin mit den Dateien? In ein anderes Verzeichnis? Nach /tmp? Viele V-Server Hoster wie beispielsweise Contabo bieten bei ihren Servern exorbitant große Mengen RAM mit an. Meine Kiste hat beispielsweise 14GB RAM. Mit den üblichen Hausmitteln (Apache, MySQL, Exim, …) bleiben immer noch ca. 10GB übrig. Warum also nicht in den RAM damit?

Hierzu muss man die project/app/AppKernel.php ein wenig anpassen. Irgendwo findet man in der Datei die Codezeilen

    public function getCacheDir()
    {
        return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
    }

    public function getLogDir()
    {
        return dirname(__DIR__).'/var/logs';
    }

wenn man diese nun anpasst und nach /dev/shm legt, ergibt sich:

    public function getCacheDir()
    {
        return '/dev/shm/projektname/cache/' .  $this->environment;
    }

    public function getLogDir()
    {
        return '/dev/shm/projektname/logs';
    }

Fertig!