2023-03-04 23:45:46 +00:00
|
|
|
<?php
|
2023-11-12 18:12:42 +00:00
|
|
|
if (!DEFINED('EGP'))
|
2023-12-23 01:50:14 +00:00
|
|
|
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
class control_threads extends cron
|
|
|
|
{
|
|
|
|
function __construct()
|
|
|
|
{
|
|
|
|
global $sql, $cfg, $argv;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
$aUnit = array();
|
|
|
|
$sql->query('SELECT `id` FROM `control` ORDER BY `id` ASC');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
if (!$sql->num())
|
|
|
|
return NULL;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
while ($unit = $sql->get())
|
|
|
|
$aUnit[$unit['id']] = '';
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
$sql->query('SELECT `id` FROM `control_servers` LIMIT 1');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
if (!$sql->num())
|
|
|
|
return NULL;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
$sql->query('SELECT `id`, `unit`, `game` FROM `control_servers` ORDER BY `unit` DESC');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
$all = $sql->num();
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
while ($server = $sql->get())
|
|
|
|
$aUnit[$server['unit']][$server['game']] .= $server['id'] . ' ';
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
if ($argv[3] == 'control_scan_servers_route')
|
|
|
|
cron::$seping = 50;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
foreach ($aUnit as $unit => $aGame) {
|
|
|
|
foreach ($aGame as $game => $servers) {
|
|
|
|
$aData = explode(' ', $servers);
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
$num = count($aData) - 1;
|
|
|
|
$sep = $num > 0 ? ceil($num / cron::$seping) : 1;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
unset($aData[end($aData)]);
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
$threads[] = cron::thread($sep, $game . ' ' . $unit, $aData);
|
|
|
|
}
|
|
|
|
}
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
$cmd = '';
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
foreach ($threads as $thread) {
|
|
|
|
foreach ($thread as $screen => $servers)
|
|
|
|
$cmd .= 'sudo -u www-data screen -dmS scan_' . (sys::first(explode(' ', $servers))) . '_' . $screen . ' taskset -c ' . $cfg['cron_taskset'] . ' sh -c \"cd /var/enginegp; php cron.php ' . $cfg['cron_key'] . ' ' . $argv[3] . ' ' . $servers . '\"; sleep 1;';
|
|
|
|
}
|
2023-03-04 23:45:46 +00:00
|
|
|
|
2023-11-12 18:12:42 +00:00
|
|
|
exec('screen -dmS control_threads_' . date('His', $start_point) . ' sh -c "' . $cmd . '"');
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
2023-05-05 01:17:19 +00:00
|
|
|
|
2023-03-04 23:45:46 +00:00
|
|
|
?>
|