-
-
Notifications
You must be signed in to change notification settings - Fork 140
Open
Description
This is code it updates first ascending but dont want all, please help me to fix i tried with less servers to update like making batch from script instead pulling all 3000 servers but same, dont want to update all
<?php
ini_set('max_execution_time', 0);
ini_set('memory_limit', '-1');
require_once('connect_db.php');
require_once('GameQ/Autoloader.php');
if ($argc < 2) {
die("Usage: php script.php <batch_number>\n");
}
$batch_number = (int)$argv[1];
$batch_size = 300;
$offset = ($batch_number - 1) * $batch_size;
$gq = new \GameQ\GameQ();
$servers = [];
$server_query = mysqli_query($conn, "SELECT id, ip, game FROM servers WHERE UNIX_TIMESTAMP() - last_update > 180 ORDER BY id ASC LIMIT $batch_size OFFSET $offset");
while ($server_row = mysqli_fetch_assoc($server_query)) {
$servers[] = [
'id' => $server_row['id'],
'type' => $server_row['game'],
'host' => $server_row['ip'],
];
}
//foreach (array_chunk($servers, 10) as $batch) {
$gq->addServers($servers);
$gq->setOption('timeout', 5);
// $gq->setOption('blocking', true);
$results = $gq->process();
foreach ($results as $data) {
// $gqip = $data["gq_address"] . ":" . $data["gq_port_client"];
// $get_server_id_query = mysqli_query($conn, "SELECT id FROM servers WHERE ip='$gqip'");
// $server_data = mysqli_fetch_assoc($get_server_id_query);
// $server_id = $server_data['id'];
$server_id = null;
foreach ($servers as $server) {
if ($server['host'] == $data["gq_address"] . ":" . $data["gq_port_client"]) {
$server_id = $server['id'];
break;
}
}
if ($server_id === null) {
continue;
}
if ($data['gq_online'] == "1") {
$last_update = time();
$hostname = mysqli_real_escape_string($conn, $data['gq_hostname']);
$mapname = mysqli_real_escape_string($conn, $data['gq_mapname']);
$num_players = mysqli_real_escape_string($conn, $data['gq_numplayers']);
$max_players = mysqli_real_escape_string($conn, $data['gq_maxplayers']);
$players = $data['players'];
$hostname = !empty($hostname) ? $hostname : '---';
$mapname = !empty($mapname) ? $mapname : '---';
$max_players = !empty($max_players) ? $max_players : '---';
// mysqli_query($conn, "DELETE FROM servers WHERE id='$server_id'");
if ($hostname == "---" || $mapname == "---" || $max_players == "---") {
mysqli_query($conn, "UPDATE servers SET online='1', num_players='$num_players', last_update='$last_update' WHERE id='$server_id'");
} else {
mysqli_query($conn, "UPDATE servers SET online='1', hostname='$hostname', mapname='$mapname', num_players='$num_players', max_players='$max_players', last_update='$last_update' WHERE id='$server_id'");
}
mysqli_query($conn, "DELETE FROM players WHERE sid='$server_id'");
foreach ($players as $player) {
$player_nickname = mysqli_real_escape_string($conn, $player['gq_name']);
$player_score = mysqli_real_escape_string($conn, $player['gq_score']);
$player_time = mysqli_real_escape_string($conn, $player['time']);
$player_nickname = !empty($player_nickname) ? $player_nickname : 'anonymous';
mysqli_query($conn, "INSERT INTO players (id, nickname, score, time_online, mapname, sid) VALUES ('', '$player_nickname', '$player_score', '$player_time', '$mapname', '$server_id')");
}
} else {
mysqli_query($conn, "UPDATE servers SET online='0', num_players='0' WHERE id='$server_id'");
mysqli_query($conn, "DELETE FROM players WHERE sid='$server_id'");
// $five_days_ago = time() - 432000;
// mysqli_query($conn, "DELETE FROM servers WHERE last_update < $five_days_ago");
}
// }
// sleep(3);
}
?>
Metadata
Metadata
Assignees
Labels
No labels