cvs: php4 /pear/Cache/Container cache_container_phplib.php
| From: | Sebastian Bergmann | Date: | Thu, 01 Mar 2001 15:42:36 +0000 |
| Subject: | cvs: php4 /pear/Cache/Container cache_container_phplib.php | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-4310@lists.php.net to get a copy of this message | ||
sbergmann Thu Mar 1 07:42:36 2001 EDT
Added files:
/php4/pear/Cache/Container cache_container_phplib.php
Log:
Added Cache Container class for PHPLIB's database abstraction layer DB_Sql. I can't test
this right now, but Ulf told me earlier today that it works fine.
Index: php4/pear/Cache/Container/cache_container_phplib.php
+++ php4/pear/Cache/Container/cache_container_phplib.php
<?php
// +----------------------------------------------------------------------+
// | PHP version 4.0 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt.
|
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Ulf Wendel <ulf.wendel@phpdoc.de> |
// | Sebastian Bergmann <sb@sebastian-bergmann.de> |
// +----------------------------------------------------------------------+
//
// $Id: cache_container_phplib.php,v 1.1 2001/03/01 15:42:36 sbergmann Exp $
require_once("Cache/Container/cache_container.php");
/*
CREATE TABLE cache (
id CHAR(32) NOT NULL DEFAULT '',
data TEXT NOT NULL DEFAULT '',
expires INT(9) NOT NULL DEFAULT 0,
changed TIMESTAMP(14),
INDEX (expires),
PRIMARY KEY (id)
)
*/
/**
* Stores cache data into a database table.
*
* @author Ulf Wendel <ulf.wendel@phpdoc.de>, Sebastian Bergmann
<sb@sebastian-bergmann.de>
* @version $Id: cache_container_phplib.php,v 1.1 2001/03/01 15:42:36 sbergmann Exp $
* @package Cache
*/
class cache_container_phplib extends cache_container {
/**
* Name of the DB table to store caching data
*
* @see cache_container_file::$filename_prefix
*/
var $cache_table = "cache";
/**
* PHPLib object
*
* @var object PEAR_DB
*/
var $db;
/**
* Name of the PHPLib DB class to use
*
* @var string
* @see $db_path, $local_path
*/
var $db_class = "";
/**
* Filename of your local.inc
*
* If empty, "local.inc" is assumed.
*
* @var string
*/
var $local_file = "";
/**
* Include path for you local.inc
*
* HINT: If your're not using prepend.php you must
* take care that all classes (files) references by you
* local.inc are included automatically. So you might
* want to write a new local2.inc that only referrs to
* the database class (file) you're using and includes all required files!
*
* @var string path to your local.inc - make sure to add a trailing slash
* @see $local_file
*/
var $local_path = "";
/**
*
* @param mixed
*/
function cache_container_phplib($options = "") {
if (is_array($options))
$this->setOptions($options, array("db_class", "db_file",
"db_path", "local_file", "local_path"));
if (!$this->db_class)
return new CacheError("No database class specified.", __FILE__, __LINE__);
// include the required files
include_once($this->local_path . $this->local_file);
// create a db object
$this->db = new $this->db_class;
} // end constructor
function fetch($id) {
$query = sprintf("SELECT expires, data FROM %s WHERE id = '%s'",
$this->cache_table,
$id
);
$this->db->query($query);
if (!$this->db->Next_Record())
return array(NULL, NULL);
return array($this->db->f("expires"),
$this->decode($this->db->f("data")));
} // end func fetch
function save($id, $data, $expires = 0) {
$query = sprintf("REPLACE INTO %s (data, expires, id) VALUES ('%s', %d,
'%s')",
$this->cache_table,
$this->encode($data),
$expires,
$id
);
$this->db->query($query);
return (boolean)$this->db->affected_rows();
} // end func save
function delete($id) {
$query = sprintf("DELETE FROM %s WHERE id = '%s'",
$this->cache_table,
$id
);
$this->db->query($query);
return (boolean)$this->db->affected_rows();
} // end func delete
function flush() {
$query = sprintf("DELETE FROM %s", $this->cache_table);
$this->db->query($query);
return $this->db->affected_rows();
} // end func flush
function idExists($id) {
$query = sprintf("SELECT id FROM %s WHERE ID = '%s'",
$this->cache_table,
$id
);
} // end func isExists
function garbageCollection() {
$query = sprintf("DELETE FORM %s WHERE expires <= %d AND expires > 0",
$this->cache_table,
time()
);
#$this->db->query($query);
} // end func garbageCollection
} // end class cache_container_phplib
?>