Version: 1.0
Type: Class
Category: Databases
License: GNU General Public License
Description: MySQL and php chache class unsid : User manuel id key string example session_id() only method (update check delete read) id : chache id sid : chache sid $obj = new pg_chache(unsid,[ id,[ sid ]]); Write method $out = $obj->write(unsid , yourstatus, yourchache ); Read method $out = $obj->read(id, sid, unsid); Update method $out = $obj->update(id, sid, unsid, yourstatus, yourchache); Check method $out = $obj->check(id, sid, unsid); Delete method $out = $obj->delete(id, sid, unsid);
<?PHP
/*
*
*--------DB-----------------------------------
CREATE TABLE `pg_chache` (
`chache_id` int(11) NOT NULL auto_increment,
`chache_sid` varchar(100) collate utf8_unicode_ci NOT NULL default '',
`chache_unsid` varchar(100) collate utf8_unicode_ci NOT NULL default '',
`chache_status` varchar(100) collate utf8_unicode_ci NOT NULL default '',
`chache` longtext collate utf8_unicode_ci NOT NULL,
`create_date` bigint(15) NOT NULL default '0',
`update_date` bigint(15) NOT NULL default '0',
PRIMARY KEY (`chache_id`),
KEY `chache_sid` (`chache_sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
*------------------------------------------------
*-------Methods------------------------------
*
* write ( unsid , status , chache ) @return chache_sid & chache_id
* check( id , sid , unsid ) @return chache_status
* read( id, sid, unsid ) @return *
* update( id, sid, unsid, status, chache ) @return true | false
* delete( id, sid, unsid ) @return ture | false
*
*------------------------------------------------
*/
class pg_chache
{
var $ct = 'upload_chache'; //chache db name
var $sidChar = 50; //sid character length
var $expiretime = 3600; //Chache life
var $id;
var $sid;
var $unsid;
var $sids;
function pg_chache($unsid, $id = false, $sid = false){
$this->expire();
if(!$this->checkSid($unsid)) return false;
$this->unsid = $unsid;
if(doubleval($id) > 0 && $this->checkSid($sid)){
$this->id = doubleval($id);
$this->sid = $sid;
}else{
return false;
}
return true;
}
//Create new chache data
function write($unsid, $status = 'false', $chache = ''){
$sid = $this->getsid();
if(!$this->checkSid($sid) || !$this->checkSid($unsid)) return false;
global $db;
$sql = "INSERT INTO
" . $this->ct . "
VALUES( NULL,
'".$sid."',
'".$unsid."',
'".$status."',
'".$chache."',
'".$this->nowDate()."',
'".$this->nowDate()."')";
$Q = $db->sql_query($sql);
if(!$Q) return false;
$Qs = $db->sql_query("SELECT chache_id AS cid FROM ".$this->ct." WHERE chache_sid='".$sid."' AND chache_unsid='".$unsid."' ORDER BY chache_id DESC LIMIT 1");
if(!$Qs) return false;
$Ss = $db->sql_numrows($Qs);
if($Ss != 1) return false;
$As = $db->sql_fetchrow($Qs);
$cid = $As['cid'];
$this->id = $cid;
$this->unsid = $unsid;
return array(id=>$cid, sid=>$sid);
}
//Update cheche data
function update($id, $sid, $unsid, $status = 'false', $chache = ''){
if(doubleval($id) <= 0) return false;
if(!$this->checkSid($sid) || !$this->checkSid($unsid)) return false;
global $db;
$sql = "UPDATE
" . $this->ct . "
SET
chache_status='" . $status . "',
chache='" . $chache . "',
update_date='" . $this->nowDate() . "'
WHERE chache_id='" . $id . "' AND chache_sid='" . $sid . "' AND chache_unsid='" . $unsid . "' LIMIT 1";
$Q = $db->sql_query($sql);
if(!$Q) return false; else return true;
}
//read chache data
function read($id, $sid, $unsid){
if(doubleval($id) <= 0) return false;
if(!$this->checkSid($sid) || !$this->checkSid($unsid)) return false;
global $db;
$sql = "SELECT * FROM " . $this->ct . " WHERE chache_id='".$id."' AND chache_sid='".$sid."' AND chache_unsid='".$unsid."' LIMIT 1";
$Q = $db->sql_query($sql);
if(!$Q) return false;
$S = $db->sql_numrows($Q);
if($S <= 0) return false;
$A = $db->sql_fetchrow($Q);
return array( id=>$A['chache_id'],
sid=>$A['chache_sid'],
unsid=>$A['chache_unsid'],
status=>$A['chache_status'],
chache=>$A['chache'],
create=>$A['create_date'],
update=>$A['update_date']);
}
//Check chache exists data
function check($id, $sid, $unsid){
if(doubleval($id) <= 0) return false;
if(!$this->checkSid($sid) || !$this->checkSid($unsid)) return false;
global $db;
$sql = "SELECT COUNT(*) AS total FROM " . $this->ct . " WHERE chache_id='".$id."' AND chache_sid='".$sid."' AND chache_unsid='".$unsid."'";
$Q = $db->sql_query($sql);
if(!$Q) return false;
$S = $db->sql_numrows($Q);
if($S <= 0) return false;
$A = $db->sql_fetchrow($Q);
return $A['total'];
}
//Delete chache data
function delete($id, $sid, $unsid){
if(doubleval($id) <= 0) return false;
if(!$this->checkSid($sid) || !$this->checkSid($unsid)) return false;
global $db;
$sql = "DELETE FROM " . $this->ct . " WHERE (update_date < '" . ( $this->nowDate() - $this->expiretime ) . "') OR (chache_id='".$id."' AND chache_sid='".$sid."' AND chache_unsid='".$unsid."')";
$Q = $db->sql_query($sql);
if(!$Q) return false; else return true;
}
/*##############*/
function expire(){
global $db;
$sql = "DELETE FROM " . $this->ct . " WHERE (update_date < '" . ( $this->nowDate() - $this->expiretime ) . "')";
$Q = $db->sql_query($sql);
if(!$Q) return false; else return true;
}
function nowDate(){
return time();
}
function checkSid($sid){
if(!$sid || $sid === false || !eregi('^[a-zA-Z0-9]+$', $sid))
return false;
else
return true;
}
function getsid(){
if(!$this->sid) $this->sid = $this->generatesid();
return $this->sid;
}
function generatesid(){
if(!is_array($this->sids)) $this->allsid();
if(!is_array($this->sids)) return false;
$sids = $this->sids;
$str = "abcdefghijklmnoprstuvyzxwqABCDEFGHIJKLMNOPRSTUVYZXWQ0123456789";
$this->sid = '';
for($l = 0; $l < $this->sidChar; $l++) $this->sid .=substr($str, rand(0, strlen($str)-1), 1);
return empty($sids[$this->sid]) ? $this->sid : $this->generatesid();
}
function allsid(){
global $db;
$sql = "SELECT chache_sid FROM " . $this->ct . " WHERE 1";
$Q = $db->sql_query($sql);
if(!$Q){
$this->sids = false;
return false;
}
$S = $db->sql_numrows($Q);
if($S <= 0){
$this->sids = array();
return true;
}
while($A = $db->sql_fetchrow($Q)){
$out[$A['chache_sid']] = $A['chache_sid'];
}
$this->sids = $out;
return true;
}
}
?>