#661: Implement a storage subsystem
-------------------------+--------------------------------------------------
Reporter: david | Owner: impl
Type: enhancement | Status: new
Priority: highest | Milestone: 1.1
Component: storage | Version:
Severity: blocker | Resolution:
Keywords: | Has_patch: 0
-------------------------+--------------------------------------------------
Changes (by david):
* has_patch: => 0
Old description:
> With a storage manager, jolly flexible, with chained storages (e.g. read
> from memcache first, then, on failure, from database, but always write to
> both), lots of drivers, and some smart way to integrate the "session"
> storage ({{{AgaviMemcacheStorage}}} ... {{{AgaviMemcacheSessionStorage}}}
> ... {{{AgaviSessionStorage}}} ... fail!), maybe through moving the
> session read/write/blah into the user, which then uses a storage or such?
> And make it BC via {{{AgaviContext::getStorage()}}}. Good candidate for
> GSoC!
New description:
Right now, Storage is only used for sessions. That is, of course, lame. We
want something general-purpose that can be used in app code, for caching,
and so on.
With a storage manager, much like the current database manager.
With chained storages (e.g. read from memcache first, then, on failure,
from database, but always write to both), lots of drivers
Of course, we need to maintain BC and therefor some smart way to integrate
the "session" storage ({{{AgaviMemcacheStorage}}} ...
{{{AgaviMemcacheSessionStorage}}} ... {{{AgaviSessionStorage}}} ...
fail!), maybe through moving the session read/write/blah into the user,
which then uses a storage or such?
BC could be implemented via the {{{factories.xml}}} config handler,
because that new feature would, of course, have
{{{http://agavi.org/agavi/1.1/config}}} as the namespace! So for a 1.0 NS,
it transparently creates a storage manager with just one session storage,
and for 1.1, it requires a {{{<storage_manager>}}} tag be there (that
would then need a separate {{{storages.xml}}}). And in the case,
{{{AgaviContext::getStorage()}}} returns the session storage as it is now.
Only really difficult question seems to be this session storage
integration in case multiple implementations exist. Maybe a storage
decorator or so? :)
Anyway, sounds like a really good candidate for GSoC!
--
Ticket URL: <http://trac.agavi.org/ticket/661#comment:1>
Agavi <http://www.agavi.org/>
An MVC Framework for PHP5
_______________________________________________
Agavi Tickets Mailing List
[email protected]
http://lists.agavi.org/mailman/listinfo/tickets