コード例 #1
0
ファイル: db.php プロジェクト: binarymaster/3WiFi
function CheckRelevanceOfMemoryTables($UseFix)
{
    $Result = array('Base' => true, 'Geo' => true, 'BaseLastFixTime' => NULL, 'GeoLastFixTime' => NULL, 'BaseNeedFix' => false, 'GeoNeedFix' => false);
    $Stat = GetStatsValue(STATS_LAST_MEMORY_BASE_TABLE_SYNS);
    if ($Stat === FALSE || $Stat == -1) {
        if ($Stat == -1) {
            QuerySql('INSERT INTO STATS_TABLE SET StatId=' . STATS_LAST_MEMORY_BASE_TABLE_SYNS);
            $Stat = GetStatsValue(STATS_LAST_MEMORY_BASE_TABLE_SYNS);
            if ($Stat === FALSE || $Stat == -1) {
                $Result['Base'] = false;
            }
        } else {
            $Result['Base'] = false;
        }
    }
    $Result['BaseLastFixTime'] = $Stat !== FALSE && $Stat != -1 ? true : false;
    if ($Stat < time()) {
        // Recopy bases
        if ($UseFix) {
            QuerySql('TRUNCATE BASE_MEM_TABLE');
            $AffectedRows = -1;
            QuerySql('INSERT INTO BASE_MEM_TABLE SELECT * FROM BASE_TABLE_CONST ORDER BY time DESC', $AffectedRows);
            SetStatsValue(STATS_BASE_ROWN_NUMS, $AffectedRows, true);
            SetStatsValue(STATS_LAST_MEMORY_BASE_TABLE_SYNS, time() + MEMORY_TABLES_RELEVANCE_EXPIRES, true);
            $Result['BaseLastFixTime'] = time();
        } else {
            $Result['Base'] = false;
            $Result['BaseNeedFix'] = true;
        }
    }
    $Stat = GetStatsValue(STATS_LAST_MEMORY_GEO_TABLE_SYNS);
    if ($Stat === FALSE || $Stat == -1) {
        if ($Stat == -1) {
            QuerySql('INSERT INTO STATS_TABLE SET StatId=' . STATS_LAST_MEMORY_GEO_TABLE_SYNS);
            $Stat = GetStatsValue(STATS_LAST_MEMORY_GEO_TABLE_SYNS);
            if ($Stat === FALSE || $Stat == -1) {
                $Result['Geo'] = false;
            }
        } else {
            $Result['Geo'] = false;
        }
    }
    $Result['GeoLastFixTime'] = $Stat !== FALSE && $Stat != -1 ? true : false;
    if ($Stat < time()) {
        if ($UseFix) {
            QuerySql('TRUNCATE GEO_MEM_TABLE');
            $AffectedRows = -1;
            QuerySql('INSERT INTO GEO_MEM_TABLE SELECT * FROM GEO_TABLE_CONST', $AffectedRows);
            SetStatsValue(STATS_GEO_ROWN_NUMS, $AffectedRows, true);
            SetStatsValue(STATS_LAST_MEMORY_GEO_TABLE_SYNS, time() + MEMORY_TABLES_RELEVANCE_EXPIRES, true);
            $Result['GeoLastFixTime'] = time();
        } else {
            $Result['Geo'] = false;
            $Result['GeoNeedFix'] = true;
        }
    }
    return $Result;
}
コード例 #2
0
ファイル: 3wifid.php プロジェクト: binarymaster/3WiFi
        break;
        // Обновление ранее не найденных точек
    // Обновление ранее не найденных точек
    case 'recheck':
        require_once 'geoext.php';
        // TODO
        break;
        // Обслуживание таблиц в памяти
    // Обслуживание таблиц в памяти
    case 'memory':
        while (true) {
            if (!TRY_USE_MEMORY_TABLES) {
                logt('Memory tables are not used');
                continue;
            }
            $DataBaseStatus = GetStatsValue(STATS_DATABASE_STATUS);
            if ($DataBaseStatus == -1) {
                SetStatsValue(STATS_DATABASE_STATUS, DATABASE_PREPARE, true);
            }
            MemoryDataBaseInit();
            if ($DataBaseStatus != DATABASE_ACTIVE) {
                SetStatsValue(STATS_DATABASE_STATUS, DATABASE_ACTIVE, true);
            }
            sleep(10);
        }
        break;
    default:
        logt("Error: Unsupported action `{$argv['1']}'");
        break;
}
$db->close();