Fix cache and increase TTL to 1 hour, make configurable.

Apparently 'usage' is a reserved word which prevented this from working.
Fixed whitespace/indenting too (really need to fix all whitespace
someday)
master
Moonchild 3 years ago
parent 9f233f50ea
commit e092b46d79
No known key found for this signature in database
GPG Key ID: 26B40624BDBFD9F3

@ -165,6 +165,9 @@ function write_config_file($dbt, $dbh, $dbn, $dbu, $dbp, $fsRoot) {
$cfg_content .= " // set MinQuota and MaxQuota\n"; $cfg_content .= " // set MinQuota and MaxQuota\n";
$cfg_content .= " define(\"MINQUOTA\", 30000);\n"; $cfg_content .= " define(\"MINQUOTA\", 30000);\n";
$cfg_content .= " define(\"MAXQUOTA\", 35000);\n"; $cfg_content .= " define(\"MAXQUOTA\", 35000);\n";
$cfg_content .= " // The setting below determines the time to live for quota totals\n";
$cfg_content .= " // before recalculating how much database space has been used.\n";
$cfg_content .= " define(\"QUOTA_TTL\", 3600);\n";
$cfg_content .= "\n?>\n"; $cfg_content .= "\n?>\n";
@ -357,7 +360,8 @@ if ( $action == "step2" ) {
$create_statement = " create table wbo ( username varchar(100), id varchar(65), collection varchar(100), $create_statement = " create table wbo ( username varchar(100), id varchar(65), collection varchar(100),
parentid varchar(65), predecessorid int, modified real, sortindex int, parentid varchar(65), predecessorid int, modified real, sortindex int,
payload text, payload_size int, ttl int, primary key (username,collection,id))"; payload text, payload_size int, ttl int, primary key (username,collection,id))";
$create_statement2 = " create table users ( username varchar(255), md5 varchar(124), login int, $create_statement2 = " create table users ( username varchar(255), md5 varchar(124), login int,
quota_usage int, usage_time int,
primary key (username)) "; primary key (username)) ";
$index1 = 'create index parentindex on wbo (username, parentid)'; $index1 = 'create index parentindex on wbo (username, parentid)';
$index2 = 'create index predecessorindex on wbo (username, predecessorid)'; $index2 = 'create index predecessorindex on wbo (username, predecessorid)';

@ -634,7 +634,7 @@ class WeaveStorage
try try
{ {
$select_stmt = 'select usage, usage_time from users where username = :username'; $select_stmt = 'select quota_usage, usage_time from users where username = :username';
$sth = $this->_dbh->prepare($select_stmt); $sth = $this->_dbh->prepare($select_stmt);
$sth->bindParam(':username', $username); $sth->bindParam(':username', $username);
$sth->execute(); $sth->execute();
@ -645,45 +645,48 @@ class WeaveStorage
throw new Exception("Database unavailable", 503); throw new Exception("Database unavailable", 503);
} }
$result = $sth->fetch(PDO::FETCH_ASSOC); $result = $sth->fetch(PDO::FETCH_ASSOC);
if ($result['usage'] != NULL && if ($result['quota_usage'] != NULL &&
$result['usage_time'] != NULL && $result['usage_time'] != NULL &&
((int)$result['usage'] != 0) && ((int)$result['quota_usage'] != 0) &&
($time - (int)$result['usage_time'] < 300)) { ($time - (int)$result['usage_time'] < QUOTA_TTL)) {
# We have a usage size and it's recent enough; use cached value # We have a usage size and it's recent enough; use cached value
return (int)$result['usage']; return (int)$result['quota_usage'];
} }
else else
{ {
# We don't have a current cached value. Retrieve and store. # We don't have a current cached value. Retrieve and store.
try try
{ {
$select_stmt = 'select round(sum(length(payload))/1024) from wbo where username = :username'; $select_stmt = 'select round(sum(length(payload))/1024) from wbo where username = :username';
$sth = $this->_dbh->prepare($select_stmt); $sth = $this->_dbh->prepare($select_stmt);
$sth->bindParam(':username', $username); $sth->bindParam(':username', $username);
$sth->execute(); $sth->execute();
} }
catch( PDOException $exception ) catch( PDOException $exception )
{ {
error_log("get_storage_total: " . $exception->getMessage()); error_log("get_storage_total: " . $exception->getMessage());
throw new Exception("Database unavailable", 503); throw new Exception("Database unavailable", 503);
} }
$usage = (int)$sth->fetchColumn(); $usage = (int)$sth->fetchColumn();
try
{ try
$update_stmt = 'update users set usage = :usage, usage_time = :usage_time where username = :username'; {
$sth = $this->_dbh->prepare($update_stmt); $update_stmt = 'update users set quota_usage = :usage, usage_time = :usage_time where username = :username';
$sth->bindParam(':username', $username); $sth = $this->_dbh->prepare($update_stmt);
$sth->bindParam(':usage', $usage); $sth->bindParam(':username', $username);
$sth->bindParam(':usage_time', $time); $sth->bindParam(':usage', $usage);
$sth->execute(); $sth->bindParam(':usage_time', $time);
} // error_log("Store query: update users set quota_usage = ".$usage.", usage_time = ".$time." where username = ".$username);
catch( PDOException $exception ) $sth->execute();
{ }
error_log("get_storage_total (store): " . $exception->getMessage()); catch( PDOException $exception )
throw new Exception("Database unavailable", 503); {
} error_log("get_storage_total (store): " . $exception->getMessage());
return $usage; throw new Exception("Database unavailable", 503);
}
return $usage;
} }
} }
@ -799,7 +802,8 @@ class WeaveStorage
try try
{ {
$create_statement = "insert into users (username, md5, login) values (:username, :md5, null)"; $create_statement = "insert into users (username, md5, login, quota_usage, usage_time)
values (:username, :md5, null, 0, 0)";
$sth = $this->_dbh->prepare($create_statement); $sth = $this->_dbh->prepare($create_statement);
$hash = WeaveHashFactory::factory(); $hash = WeaveHashFactory::factory();

@ -55,15 +55,15 @@
define ('LOG_THE_ERROR', 0); define ('LOG_THE_ERROR', 0);
define ('LOG_QUOTAS', 1); define ('LOG_QUOTAS', 0);
function log_quota($msg) function log_quota($msg)
{ {
if ( LOG_QUOTAS == 1 ) if ( LOG_QUOTAS == 1 )
{ {
$datei = fopen("/tmp/FSyncMS-quota.log","a"); $datei = fopen("/tmp/FSyncMS-quota.log","a");
$fmsg = sprintf("$msg\n"); // $fmsg = sprintf("$msg\n");
fputs($datei,$fmsg); fputs($datei,"$msg\n");
// fputs($datei,"Server ".print_r( $_SERVER, true)); // fputs($datei,"Server ".print_r( $_SERVER, true));
fclose($datei); fclose($datei);
} }
@ -74,8 +74,8 @@
if ( LOG_THE_ERROR == 1 ) if ( LOG_THE_ERROR == 1 )
{ {
$datei = fopen("/tmp/FSyncMS-error.txt","a"); $datei = fopen("/tmp/FSyncMS-error.txt","a");
$fmsg = sprintf("$msg\n"); // $fmsg = sprintf("$msg\n");
fputs($datei,$fmsg); fputs($datei,"$msg\n");
// fputs($datei,"Server ".print_r( $_SERVER, true)); // fputs($datei,"Server ".print_r( $_SERVER, true));
fclose($datei); fclose($datei);
} }

Loading…
Cancel
Save