On Thu, 11 Apr 2002, Steve Meyers wrote:
> Here's another idea that I've floated the last couple weeks (this would be
> especially good in the SRM and msession extensions), how about a method to
> cache values? This is very similar to the "application variables", except
> that there would be a limit to how much was stored, and if that limit was
> reached, the most infrequently used data would be discarded.
>
> Right now I've got some lookups I have to do fairly often for country,
> state/province, city of users. There are over 2 million cities in my
> database, but the vast majority of them aren't used. I would like to be
> able to store the most frequently used data in a persistent manner, but
> there's really not the option of storing everything. So if it wasn't in
> the persistent variable, I would look it up in the database, and then put
> it into the persistent variable. The caching mechanism would then delete a
> value if necessary, e.g. the least recently used.
You can already do this with SRM, by writing a Banana like:
<?php
class Cache extends Banana
{
function init ($db)
{
$this->db = $db;
$this->cache = array();
}
function get_city ($city)
{
if (in_array ($city, array_keys ($this->cache))) {
return $this->cache[$city];
} else {
$r = mysql_query ("select * from City where name =
'$city'", $this->db);
$row = mysql_fetch_row ($r);
$this->cache[$city] = $row;
$this->cache[$city]['timestamp'] = date();
return $row;
}
/* purge old entries */
foreach ($this->cache as $key => $entry) {
if ($entry['timestamp'] > date() - 3600) {
unset ($this->cache['timestamp']);
}
}
}
}
$banana = new Cache();
$banana->run();
?>
Then call from your 'client' script:
<?php
$srm = new SRM ('/var/srm.socket', 7777);
$cache = new SRMApp ($srm, 'Cache');
$cache->init(mysql_connect ('localhost', 'user', 'password'));
$cache->get_city ("Koln");
?>
regards,
Derick
-----------------------------------------------------------------------
Did I help you? Consider a gift:
http://www.amazon.co.uk/exec/obidos/registry/SLCB276UZU8B
-----------------------------------------------------------------------
PHP: Scripting the Web - [EMAIL PROTECTED]
All your branches are belong to me!
SRM: Script Running Machine - www.vl-srm.net
-----------------------------------------------------------------------
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php