study
やっぱり、書くだけ。
もうなんのコードだかわかりません。
require_once ("ini.php");
require_once ("log.inc");
require_once ("dbmethods.inc");
require_once ("util.inc");
require_once ("XML/Unserializer.php");class CCacheDb
{
const TYPE_1DAY = "1DAY";
const TYPE_20DAY = "20DAY";var $TYPE_DAYS = array(
CCacheDB::TYPE_1DAY => 86400
,CCacheDB::TYPE_20DAY => 1728000
);
var $pdo;
var $key;
var $type;public function CCacheDB ( $pdo, $key, $type ) {
$this->pdo = $pdo;
$this->key = $key;
$this->type = $type;}
public function getXmlUnserializedData ( $value ) {
$unserializer =& new XML_Unserializer();
$unserializer->setOption("parseAttributes", TRUE);
$success = $unserializer->unserialize($value);
if (PEAR::isError($success)) {
throw new Exception( "PEAR::isError XML_Unserializer->unserialize" );}
return $unserializer->getUnserializedData();
}public function getXmlValue () {
$value = $this->getValue ();
if ( $value ) {
$value = $this->getXmlUnserializedData( $value );}
return $value;
}public function getValue () {
$retVal = null;$tblname = "T_CACHE";
$selfields = array( 'V_VALUE'
,'C_UPDATE_DATETIME'
,'C_UPDATE_DATE'
,'C_UPDATE_TIME'
);$where = array( array( 'FIELD' => 'V_TYPE', 'COMPARE' => '=', 'VALUE' => $this->type)
,array( 'FIELD' => 'V_KEY', 'COMPARE' => '=', 'AO' => 'AND' ,'VALUE' => $this->key) );
$result = CDbMethods::select( $pdo, $tblname, $selfields, $where, null, false );if ( count( $result ) >= 0 ) {
$yyyy = intval( substr( $result[0]['C_UPDATE_DATETIME'], 0, 4 ) );
$mm = intval( substr( $result[0]['C_UPDATE_DATETIME'], 5, 2 ) );
$dd = intval( substr( $result[0]['C_UPDATE_DATETIME'], 8, 2 ) );
$hh = intval( substr( $result[0]['C_UPDATE_DATETIME'],10, 2 ) );
$nn = intval( substr( $result[0]['C_UPDATE_DATETIME'],13, 2 ) );
$ss = intval( substr( $result[0]['C_UPDATE_DATETIME'],16, 2 ) );$dayLimit = CUtil::addDate( $yyyy, $mm, $dd, $hh, $mm, $ss, $this->TYPE_DAYS[$this->type], "YmdHis" );
$dayNow = date("YmdHis");if ( bccomp( $dayLimit, $dayNow ) == -1 ) {
//limit after
CDbMethods::delete( $pdo, $tblname, $where );} else {
$retVal = $result[0]['V_VALUE'];}
}
return $retVal;
}public function setValue ( $value ) {
try {
$tblname = "T_CACHE";
$ymd = CDBMethods::getDateStr01();
$hms = CDBMethods::getTimeStr01();
$insfields = array (
'V_TYPE' => $this->type
,'V_KEY' => $this->key
,'V_VALUE' => $value
,'C_UPDATE_DATETIME' => $ymd . $hms
,'C_INSERT_DATE' => $ymd
,'C_INSERT_TIME' => $hms
,'C_UPDATE_DATE' => $ymd
,'C_UPDATE_TIME' => $hms
);
CDbMethods::insert( $pdo, $tblname, $insfields );} catch ( Exception $e ) {
CLog::error( $e );
CLog::errorTrace( $e );
////throw $e;}
}
}