Skip to content

Commit 60f8e14

Browse files
authored
Merge pull request #1011 from london89/alpha
Изменение контроля циклов
2 parents c15840a + 1ab37d5 commit 60f8e14

File tree

3 files changed

+59
-3
lines changed

3 files changed

+59
-3
lines changed

cycle.php

+8-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242

4343
echo "CONNECTED TO DB" . PHP_EOL;
4444

45+
// создаем табличку cyclesRun, если её нет
46+
SQLExec('CREATE TABLE IF NOT EXISTS `cyclesRun` (`KEYWORD` char(100) NOT NULL,`DATAVALUE` char(255) NOT NULL,PRIMARY KEY (`KEYWORD`)) ENGINE=MEMORY DEFAULT CHARSET=utf8;');
47+
4548
$old_mask = umask(0);
4649
if (is_dir(ROOT . 'cached')) {
4750
DebMes("Removing cache from " . ROOT . 'cached');
@@ -355,6 +358,9 @@
355358
}
356359

357360
$is_running = array();
361+
$tmpcyclesTimestamps=SQLSelect("SELECT * FROM cyclesRun;");
362+
foreach ($tmpcyclesTimestamps as $k => $v) $cyclesTimestamps[$v['KEYWORD']] = $v['DATAVALUE'];
363+
358364
foreach ($threads->commandLines as $id => $cmd) {
359365
if (preg_match('/(cycle_.+?)\.php/is', $cmd, $m)) {
360366
$title = $m[1];
@@ -365,7 +371,8 @@
365371
$auto_restarts[] = $title;
366372
}
367373

368-
$cycle_updated_timestamp = getGlobal($title . 'Run');
374+
//$cycle_updated_timestamp = getGlobal($title . 'Run');
375+
$cycle_updated_timestamp=$cyclesTimestamps[strtolower('MJD:ThisComputer.'.$title.'Run')];
369376
if (!isset($to_start[$title]) &&
370377
$cycle_updated_timestamp &&
371378
in_array($title, $auto_restarts) &&

lib/caching.class.php

+40
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,44 @@
11
<?php
2+
3+
function saveCycleToCache($key, $value)
4+
{
5+
$key = strtolower($key);
6+
7+
if (is_array($value) || strlen($value) > 255) {
8+
SQLExec("DELETE FROM cyclesRun WHERE KEYWORD='".$key."'");
9+
return;
10+
}
11+
12+
13+
if (isset($_SERVER['REQUEST_METHOD'])) {
14+
global $memory_cycle_cache;
15+
$memory_cycle_cache[$key] = $value;
16+
}
17+
$rec = array('KEYWORD' => $key, 'DATAVALUE' => $value);
18+
$sqlQuery = "REPLACE INTO cyclesRun (KEYWORD, DATAVALUE) " .
19+
" VALUES ('" . DbSafe1($rec['KEYWORD']) . "', " .
20+
"'" . DbSafe1($rec['DATAVALUE']) . "')";
21+
SQLExec($sqlQuery);
22+
}
23+
24+
function checkCycleFromCache($key)
25+
{
26+
$key = strtolower($key);
27+
if (isset($_SERVER['REQUEST_METHOD'])) {
28+
global $memory_cycle_cache;
29+
if (is_array($memory_cycle_cache) && isset($memory_cycle_cache[$key])) {
30+
return $memory_cycle_cache[$key];
31+
}
32+
}
33+
$rec = SQLSelectOne("SELECT * FROM cyclesRun WHERE KEYWORD = '" . DBSafe($key) . "'");
34+
if ($rec['KEYWORD']) {
35+
return $rec['DATAVALUE'];
36+
} else {
37+
return false;
38+
}
39+
}
40+
41+
242
/**
343
* Summary of clearCacheData
444
* @param mixed $prefix prefix

lib/objects.class.php

+11-2
Original file line numberDiff line numberDiff line change
@@ -603,12 +603,17 @@ function getGlobal($varname)
603603
$object_name = 'ThisComputer';
604604
}
605605
$cached_name = 'MJD:' . $object_name . '.' . $varname;
606-
$cached_value = checkFromCache($cached_name);
607-
606+
if (strpos($varname,'cycle_') == 0 && strpos($varname,'Run') !== FALSE) {
607+
$cached_value = checkCycleFromCache($cached_name);
608+
} else {
609+
$cached_value = checkFromCache($cached_name);
610+
}
608611
if ($cached_value !== false) {
609612
return $cached_value;
610613
}
614+
611615
$obj = getObject($object_name);
616+
612617
if ($obj) {
613618
$value = $obj->getProperty($varname);
614619
return $value;
@@ -912,6 +917,10 @@ function getHistoryValue($varname, $time, $nerest = false)
912917
*/
913918
function setGlobal($varname, $value, $no_linked = 0, $source = '')
914919
{
920+
if (strpos($varname,'cycle_') == 0 && strpos($varname,'Run') !== FALSE) {
921+
saveCycleToCache('MJD:ThisComputer.'.$varname,$value);
922+
return;
923+
}
915924

916925
$tmp = explode('.', $varname);
917926

0 commit comments

Comments
 (0)