X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fstats-functions.php;h=baa0b130b1f0f24714685c12fa1bc650fba7308a;hb=8def2eea23fae29ba4d86b4bf7df9307e62f61b7;hp=da5815c1828dd854afd4978e41f72165b3fa11a3;hpb=64c8349613addc3da2242c5cd6b99d64e3fb5f8e;p=mailer.git diff --git a/inc/stats-functions.php b/inc/stats-functions.php index da5815c182..baa0b130b1 100644 --- a/inc/stats-functions.php +++ b/inc/stats-functions.php @@ -45,17 +45,11 @@ if (!defined('__SECURITY')) { function initStatsSystem () { // Is stats cache loaded? if ((!isset($GLOBALS['stats_loaded'])) && (getConfig('STATS_ENABLED') == 'Y')) { - // Load stats cache - $GLOBALS['stats_fqfn'] = sprintf("%sinc/cache/stats.cache", getConfig('PATH')); - - // Is the file readable? - if (isFileReadable($GLOBALS['stats_fqfn'])) { - // Yes, so load it and eval - eval(readFromFile($GLOBALS['stats_fqfn'])); - } else { - // Generate it only - touch($GLOBALS['stats_fqfn']); - } + // Init statistics array + $GLOBALS['stats'] = array(); + + // Load statistics entry from temporary table + loadStatsTable(); // Stats are loaded! $GLOBALS['stats_loaded'] = true; @@ -70,6 +64,9 @@ function isStatsEntrySet ($entry) { // Increments a statistics entry function incrementStatsEntry ($entry, $amount=1) { + // Do we have stats enabled? + if (getConfig('STATS_ENABLED') != 'Y') return; + // Is it there? if (isStatsEntrySet($entry)) { // Then increment it @@ -83,7 +80,7 @@ function incrementStatsEntry ($entry, $amount=1) { // Getter for stats function getStatsEntry ($entry) { // Default is zero - $stats = 0; + $stats = '0'; // Is it there? if (isStatsEntrySet($entry)) { @@ -100,20 +97,73 @@ function setStatsEntry ($entry, $value) { $GLOBALS['stats'][$entry] = $value; } +// Loads stats table +function loadStatsTable () { + // Do we have it there for today? + if (!isStatsTableCreated()) { + // Then create a default one + createStatsTable(); + } // END - if + + // Load it from database + $result = SQL_QUERY_ESC("SELECT `stats_entry`,`stats_value` FROM `{?_MYSQL_PREFIX?}_stats_%s` ORDER BY `stats_entry` ASC", + array(date('Ymd', time())), __FUNCTION__, __LINE__); + + // Read all rows + while ($row = SQL_FETCHARRAY($result)) { + $GLOBALS['stats'][$row['stats_entry']] = $row['stats_value']; + } // END - while + + // Free the result + SQL_FREERESULT($result); +} + +// Checks if the the statistics table is created +function isStatsTableCreated () { + // Ask for it + $result = SQL_QUERY_ESC("SHOW TABLES LIKE '{?_MYSQL_PREFIX?}_stats_%s'", + array(date('Ymd', time())), __FUNCTION__, __LINE__); + + // Do we have a row? + return SQL_NUMROWS($result); +} + +// Create the dummy table +function createStatsTable () { + // Create it here + $result = SQL_QUERY_ESC("CREATE TABLE IF NOT EXISTS `{?_MYSQL_PREFIX?}_stats_%s` ( +`stats_entry` VARCHAR(100) NOT NULL DEFAULT '', +`stats_value` BIGINT(20) NOT NULL DEFAULT 0, +PRIMARY KEY (`stats_entry`) +) TYPE=HEAP COMMENT='Temporary statistics table'", + array(date('Ymd', time())), __FUNCTION__, __LINE__); +} + +// Write all entries to the table +function writeStatsTable () { + // Empty the table first + SQL_QUERY_ESC("TRUNCATE `{?_MYSQL_PREFIX?}_stats_%s`", + array(date('Ymd', time())), __FUNCTION__, __LINE__); + + // Begin the SQL command + $sql = sprintf("REPLACE INTO `{?_MYSQL_PREFIX?}_stats_%s` (`stats_entry`,`stats_value`) VALUES ", + date('Ymd', time())); + + // Add all entries to the final query + foreach ($GLOBALS['stats'] as $entry=>$value) { + $sql .= sprintf("('%s', %s),", $entry, bigintval($value)); + } // END - foreach + + // Finalize it and run it + SQL_QUERY(substr($sql, 0, -1), __FUNCTION__, __LINE__); +} + // Filter for flushing statistics function FILTER_FLUSH_STATS () { // Now do we have stats? if ((isset($GLOBALS['stats'])) && (getConfig('STATS_ENABLED') == 'Y')) { - // Then prepare it for writing - foreach ($GLOBALS['stats'] as $key=>$value) { - $stats[] = '$GLOBALS[\'stats\'][\'' . $key . '\'] = ' . $value . ';'; - } // END - foreach - - // Add empty line - $stats[] = ''; - - // And flush all out - writeToFile($GLOBALS['stats_fqfn'], implode("\n", $stats), true); + // Write statistics to temporary table + writeStatsTable(); } // END - if }