Cron subsystem rework (#206)

This commit is contained in:
Roman Kelesidis 2023-07-01 00:01:29 +07:00 committed by GitHub
parent 98a79565d1
commit 1b304e8bc5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 15 additions and 50 deletions

View File

@ -2,7 +2,6 @@
if (isset($_REQUEST['GLOBALS'])) die(); if (isset($_REQUEST['GLOBALS'])) die();
ignore_user_abort(true);
define('TIMESTART', utime()); define('TIMESTART', utime());
define('TIMENOW', time()); define('TIMENOW', time());

View File

@ -254,10 +254,8 @@ class sql_db
} }
return $result; return $result;
} }
else
{ return false;
return false;
}
} }
/** /**
@ -271,10 +269,8 @@ class sql_db
{ {
return isset($row[$field_name]) ? $row[$field_name] : false; return isset($row[$field_name]) ? $row[$field_name] : false;
} }
else
{ return $row;
return $row;
}
} }
/** /**
@ -531,10 +527,8 @@ class sql_db
{ {
return array('code' => mysql_errno($this->link), 'message' => mysql_error($this->link)); return array('code' => mysql_errno($this->link), 'message' => mysql_error($this->link));
} }
else
{ return array('code' => '', 'message' => 'not connected');
return array('code' => '', 'message' => 'not connected');
}
} }
/** /**

View File

@ -22,7 +22,6 @@ if ($cron_jobs)
if ($job['disable_board']) if ($job['disable_board'])
{ {
cron_disable_board(); cron_disable_board();
sleep(10);
break; break;
} }
} }
@ -35,4 +34,4 @@ if ($cron_jobs)
else else
{ {
bb_log(date('H:i:s - ') . getmypid() .' --x- no active jobs found ----------------------------------------------'. LOG_LF, CRON_LOG_DIR .'cron_check'); bb_log(date('H:i:s - ') . getmypid() .' --x- no active jobs found ----------------------------------------------'. LOG_LF, CRON_LOG_DIR .'cron_check');
} }

View File

@ -58,7 +58,6 @@ function cron_track_running ($mode)
// //
if (cron_get_file_lock()) if (cron_get_file_lock())
{ {
ignore_user_abort(true);
register_shutdown_function('cron_release_file_lock'); register_shutdown_function('cron_release_file_lock');
register_shutdown_function('cron_enable_board'); register_shutdown_function('cron_enable_board');
@ -74,4 +73,4 @@ if (cron_get_file_lock())
if (defined('IN_CRON')) if (defined('IN_CRON'))
{ {
bb_log(date('H:i:s - ') . getmypid() .' --x- ALL jobs FINISHED *************************************************'. LOG_LF, CRON_LOG_DIR .'cron_check'); bb_log(date('H:i:s - ') . getmypid() .' --x- ALL jobs FINISHED *************************************************'. LOG_LF, CRON_LOG_DIR .'cron_check');
} }

View File

@ -114,8 +114,6 @@ foreach ($cron_jobs as $job)
LIMIT 1 LIMIT 1
"); ");
sleep(1);
if (utime() - TIMESTART > 600) if (utime() - TIMESTART > 600)
{ {
return; // чтобы daily скрипты не блокировали надолго interval'ные return; // чтобы daily скрипты не блокировали надолго interval'ные
@ -126,4 +124,4 @@ foreach ($cron_jobs as $job)
$cron_err_msg = "Can not run \"{$job['cron_title']}\" : file \"$job_script\" not found". LOG_LF; $cron_err_msg = "Can not run \"{$job['cron_title']}\" : file \"$job_script\" not found". LOG_LF;
bb_log($cron_err_msg, 'cron_error'); bb_log($cron_err_msg, 'cron_error');
} }
} }

View File

@ -31,10 +31,6 @@ if ($poll_max_days = (int) $bb_cfg['poll_max_days'])
{ {
break; break;
} }
if (!($start_id % ($per_cycle*10)))
{
sleep(1);
}
$start_id += $per_cycle; $start_id += $per_cycle;
} }
} }
@ -46,4 +42,4 @@ DB()->query("UPDATE ". BB_USERS ." SET user_newpasswd = '' WHERE user_lastvisit
if ($posts_days = intval($bb_cfg['posts_cache_days_keep'])) if ($posts_days = intval($bb_cfg['posts_cache_days_keep']))
{ {
DB()->query("DELETE FROM ". BB_POSTS_HTML ." WHERE post_html_time < DATE_SUB(NOW(), INTERVAL $posts_days DAY)"); DB()->query("DELETE FROM ". BB_POSTS_HTML ." WHERE post_html_time < DATE_SUB(NOW(), INTERVAL $posts_days DAY)");
} }

View File

@ -52,6 +52,4 @@ while (true)
{ {
break; break;
} }
}
sleep(3);
}

View File

@ -34,8 +34,6 @@ DB()->query("
DB()->unlock(); DB()->unlock();
// ############################ Tables UNLOCKED ############################## // ############################ Tables UNLOCKED ##############################
sleep(5);
// Delete staled sessions // Delete staled sessions
DB()->query(" DB()->query("
DELETE s DELETE s
@ -44,4 +42,4 @@ DB()->query("
(s.session_time < $user_session_gc_time AND s.session_admin = 0) (s.session_time < $user_session_gc_time AND s.session_admin = 0)
OR OR
(s.session_time < $admin_session_gc_time AND s.session_admin != 0) (s.session_time < $admin_session_gc_time AND s.session_admin != 0)
"); ");

View File

@ -83,11 +83,6 @@ while (true)
break; break;
} }
if (!($start_id % ($per_cycle*10)))
{
sleep(1);
}
$start_id += $per_cycle; $start_id += $per_cycle;
} }
@ -202,4 +197,4 @@ if ($bb_cfg['torhelp_enabled'])
DB()->query("DROP TABLE IF EXISTS ". NEW_BB_BT_TORHELP .", ". OLD_BB_BT_TORHELP); DB()->query("DROP TABLE IF EXISTS ". NEW_BB_BT_TORHELP .", ". OLD_BB_BT_TORHELP);
} }
DB()->expect_slow_query(10); DB()->expect_slow_query(10);

View File

@ -41,7 +41,6 @@ function run_jobs($jobs)
END END
WHERE cron_id IN ($jobs) WHERE cron_id IN ($jobs)
"); ");
sleep(3);
return; return;
} }
@ -154,4 +153,4 @@ function update_cron_job($cron_arr)
run_counter = '$run_counter' run_counter = '$run_counter'
WHERE cron_id = $cron_id WHERE cron_id = $cron_id
"); ");
} }

View File

@ -677,16 +677,11 @@ function ocelot_send_request ($get, $max_attempts = 1, &$err = false)
global $bb_cfg; global $bb_cfg;
$header = "GET /$get HTTP/1.1\r\nConnection: Close\r\n\r\n"; $header = "GET /$get HTTP/1.1\r\nConnection: Close\r\n\r\n";
$attempts = $sleep = $success = $response = 0; $attempts = $success = $response = 0;
$start_time = microtime(true); $start_time = microtime(true);
while (!$success && $attempts++ < $max_attempts) while (!$success && $attempts++ < $max_attempts)
{ {
if ($sleep)
{
sleep($sleep);
}
// Send request // Send request
$file = fsockopen($bb_cfg['ocelot']['host'], $bb_cfg['ocelot']['port'], $error_num, $error_string); $file = fsockopen($bb_cfg['ocelot']['host'], $bb_cfg['ocelot']['port'], $error_num, $error_string);
if ($file) if ($file)
@ -694,14 +689,12 @@ function ocelot_send_request ($get, $max_attempts = 1, &$err = false)
if (fwrite($file, $header) === false) if (fwrite($file, $header) === false)
{ {
$err = "Failed to fwrite()"; $err = "Failed to fwrite()";
$sleep = 3;
continue; continue;
} }
} }
else else
{ {
$err = "Failed to fsockopen() - $error_num - $error_string"; $err = "Failed to fsockopen() - $error_num - $error_string";
$sleep = 6;
continue; continue;
} }

View File

@ -480,10 +480,7 @@ if ((empty($_POST) && !defined('IN_ADMIN') && !defined('IN_AJAX') && !file_exist
if (DB()->get_lock('cron', 1)) if (DB()->get_lock('cron', 1))
{ {
bb_log(date('H:i:s - ') . getmypid() .' --x- DB-LOCK OBTAINED !!!!!!!!!!!!!!!!!'. LOG_LF, CRON_LOG_DIR .'cron_check'); bb_log(date('H:i:s - ') . getmypid() .' --x- DB-LOCK OBTAINED !!!!!!!!!!!!!!!!!'. LOG_LF, CRON_LOG_DIR .'cron_check');
sleep(2);
require(CRON_DIR .'cron_init.php'); require(CRON_DIR .'cron_init.php');
DB()->release_lock('cron'); DB()->release_lock('cron');
} }
} }