sanders_yao
版主
  
or2 =333
UID 30286
精华
0
积分 2573
帖子 4779
金钱 2570 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23 来自 北京 菜户营
状态 离线
|
[广告]: Enom域名自助付费 自助注册 自助PUSH 主流域名COM等一律57.99元年
我还没形成习惯 不知道该记录什么
上次写的一个数据库类型里采用了这样的功能:
function logHandle($str, $mode){
if(!in_array($mode, array("query", "error"))){
return false;
}
set_time_limit(1000);
ignore_user_abort(true);
if(is_dir($this->itsLogDir)){
$fileStr = $str . "\t" . time() . "\n";
$fp = @fopen($this->itsLogDir . $mode . "log.txt", "a");
if(false !== $fp){
if(filesize($this->itsLogDir . $mode . "log.txt") + strlen(fileStr) > $this->itsMaxLogSize){
copy($this->itsLogDir . $mode . "log.txt", $this->itsLogDir . $mode . "log_" . time() . ".txt");
fclose($fp);
$fp = @fopen($this->itsLogDir . $mode . "log.txt", "w");
if(false === $fp){
return false;
}
fwrite($fp, $str, strlen($str));
fclose($fp);
}
}
}
if("" == $this->itsLogTable){
return true;
}
$this->getTables();
if(NULL != $this->itsLink && isset($this->itsTables[$this->itsLogTable])){
$query_string = sprintf("SELECT COUNT(*) AS `total` FROM `%s`;", $this->itsLogTable);
$result = mysql_query($query_string, $this->itsLink) or die(mysql_error());
if(false === $result){
return false;
}
$arrayTmp = mysql_fetch_array($result);
if($arrayTmp["total"] >= $this->itsMaxLogRows){
$tmpTable = $this->itsLogTable . date("ymd");
$query_string = sprintf("CREATE TABLE `%s` (
`id` int(10) unsigned NOT NULL auto_increment,
`detail` text,
`mode` varchar(5) NOT NULL default '',
`ctime` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM", $tmpTable);
mysql_query($query_string, $this->itsLink) or die(mysql_error());
$query_string = sprintf("INSERT INTO `%s`(`detail`, `mode`, `ctime`) SELECT `detail`, `mode`, `ctime` FROM `%s`;", $tmpTable, $this->itsLogTable);
mysql_query($query_string, $this->itsLink) or die(mysql_error());
$query_string = sprintf("TRUNCATE TABLE `%s`", $this->itsLogTable);
mysql_query($query_string, $this->itsLink) or die(mysql_error());
}
$query_string = sprintf("INSERT INTO `%s`(`detail`, `mode`, `ctime`) VALUES('%s', '%s', UNIX_TIMESTAMP())", $this->itsLogTable, $str, $mode);
mysql_query($query_string, $this->itsLink) or die(mysql_error());
}
return true;
}
还没测试哈 不知道会出现什么情况 可能性能会降低很多
|
|