Hello everyone !

I tried to patch the ysfDimensionsPlugin for use with sfSqliteCache,
as neither APC nor eAccelerator are available on my shared host.
At first I thought it was just a matter of applying this patch (http://
trac.symfony-project.org/ticket/6267) and serializing/unserialising
cache data. But it turned out that I also had to change the cache
directory when the dimension change, which gives me one db file in
each dimension directory...
So I was wondering how to avoid duplicate db files ?
And also if it is possible to avoid serializing cache data ?

Thanks for your wise advices !

Here are my changes:

in ysfConfigDimension.php:
public function setCache(sfCache $cache){
  $this->cache = $cache;
}

in ysfProjectConfiguration.php:
/**
 * Sets the project dimension.
 *
 * @param array The configuration dimension as an array
 */
public function setDimension($dimension)
{
  if ($dimension === null || $dimension === false)
  {
    $this->dimension = null;

    // if dimension changes, change cache dir
    $this->setCacheDir($this->getRootDir().'/cache');
  }
  else
  {
    try
    {
      if(!$this->hasDimension())
      {
        $this->dimension = new ysfConfigDimension(
          $this->getEventDispatcher(),

          (!isset($this->debug) || (isset($this->debug) && $this-
>debug === true))
            ? new sfNoCache()
            // Patch to allow other cache handler
            : $this->getDimensionCacheHandler()

        );
      }

      // set dimension
      $this->dimension->set($dimension);

      sfConfig::set('sf_dimension', $this->dimension->getName());

      // if dimension changes, change cache dir
      $cache_dir = $this->getRootDir().'/cache/'.$this->dimension-
>getName();
      $this->setCacheDir($cache_dir);
      // Reconfigure SQLite cache
      $this->dimension->setCache(
        new sfSQLiteCache(
          array(
            'database' => sfConfig::get('sf_cache_dir').'/
cache.sqlite',
            'automatic_cleaning_factor' => 0,
            'lifetime' => 86400
          )
        )
      );
    }
    catch (sfException $e)
    {
      if(method_exists($e, 'asResponse'))
      {
        // handle exception early on and exit if something bad happens
        $e->asResponse()->send(); exit;
      }
      else
      {
        echo $e->getMessage(); exit;
      }
    }
  }
}

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"symfony users" group.
To post to this group, send email to symfony-users@googlegroups.com
To unsubscribe from this group, send email to 
symfony-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to