1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
<cfcomponent extends="Controller">
<cffunction name="cleanup">
<cfscript>
var stale_schemas = model("Schema_Def").findAll(where="last_used < '#DateAdd('n', -30, Now())#' AND current_host_id IS NOT NULL", returnAs="objects", order="last_used", maxRows="100", select="db_type_id,short_code,current_host_id,id");
var i = 0;
for (i = 1; i<= ArrayLen(stale_schemas); i++)
{
lock name="#stale_schemas[i].db_type_id#_#stale_schemas[i].short_code#" type="exclusive" timeout="60"
{
stale_schemas[i].purgeDatabase(1);
}
}
</cfscript>
<cfobjectcache
action = "clear" />
<cfset renderNothing()>
</cffunction>
<cffunction name="cleanDatasources">
<cfscript>
var loc = {};
loc.datasources = getDatasources(adminPassword=get('CFAdminPassword'));
loc.dsnArray = structKeyArray(loc.datasources);
for (loc.i = 1; loc.i <= ArrayLen(loc.dsnArray); loc.i++) {
loc.dsnMatch = reFind("^(\d+)_([a-z0-9]+)$", loc.dsnArray[loc.i], 0, true);
if (ArrayLen(loc.dsnMatch.len) IS 3) {
loc.db_type_id = mid(loc.dsnArray[loc.i], loc.dsnMatch.pos[2], loc.dsnMatch.len[2]);
loc.short_code = mid(loc.dsnArray[loc.i], loc.dsnMatch.pos[3], loc.dsnMatch.len[3]);
loc.active_database = model("Schema_Def").findOne(where="current_host_id IS NOT NULL AND db_type_id = #loc.db_type_id# AND short_code = '#loc.short_code#'", returnAs="object", select="db_type_id,short_code,current_host_id,id");
if (loc.active_database IS false) {
loc.host = model("Host");
loc.host.db_type_id = loc.db_type_id;
loc.host.dropDSN(loc.short_code);
}
}
}
abort;
renderNothing();
</cfscript>
</cffunction>
</cfcomponent>
|