add(worker)
This commit is contained in:
parent
3849ba2b10
commit
d55062679a
@ -24,15 +24,38 @@ $table = isset($_GET['table']) ? $_GET['table'] : '';
|
|||||||
<script src="../js/popper.min.js"></script>
|
<script src="../js/popper.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const table = "<?php echo htmlspecialchars($table); ?>";
|
||||||
|
if (window.Worker) {
|
||||||
|
const statsWorker = new Worker('stats.worker.js');
|
||||||
|
statsWorker.postMessage({
|
||||||
|
table: table
|
||||||
|
});
|
||||||
|
statsWorker.onmessage = function(e) {
|
||||||
|
const stats = e.data;
|
||||||
|
document.getElementById('stats').innerHTML = `
|
||||||
|
<span class="badge bg-info text-dark me-2">
|
||||||
|
<b>Instruction</b> - Min: ${stats.instruction.min}, Max: ${stats.instruction.max}, Prom: ${stats.instruction.avg}
|
||||||
|
</span>
|
||||||
|
<span class="badge bg-info text-dark me-2">
|
||||||
|
<b>Input</b> - Min: ${stats.input.min}, Max: ${stats.input.max}, Prom: ${stats.input.avg}
|
||||||
|
</span>
|
||||||
|
<span class="badge bg-info text-dark">
|
||||||
|
<b>Output</b> - Min: ${stats.output.min}, Max: ${stats.output.max}, Prom: ${stats.output.avg}
|
||||||
|
</span>
|
||||||
|
`;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<body style="background-color:#fdfdfd;">
|
<body style="background-color:#fdfdfd;">
|
||||||
<br>
|
|
||||||
<h1 align="center" style="color:color(srgb 0.52 0.59 0.7);font-weight:bold;">Datatables server side processing with PHP and MYSQL </h1>
|
|
||||||
<br>
|
<br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="mb-3">
|
<div class="mb-3 d-flex align-items-center gap-3">
|
||||||
<a href="add_dataset.php?table=<?php echo htmlspecialchars($table); ?>" class="btn btn-primary">
|
<a href="add_dataset.php?table=<?php echo htmlspecialchars($table); ?>" class="btn btn-primary">
|
||||||
<i class="bi bi-plus-circle"></i> Agregar Dataset
|
<i class="bi bi-plus-circle"></i> Agregar Dataset
|
||||||
</a>
|
</a>
|
||||||
|
<div id="stats" class="ms-3"></div>
|
||||||
</div>
|
</div>
|
||||||
<table id="example" class="display" style="width:100%">
|
<table id="example" class="display" style="width:100%">
|
||||||
<thead>
|
<thead>
|
||||||
|
|||||||
12
server_side/stats.worker.js
Normal file
12
server_side/stats.worker.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
self.onmessage = function(e) {
|
||||||
|
const table = e.data.table;
|
||||||
|
function fetchStats() {
|
||||||
|
fetch(`stats_worker.php?table=${encodeURIComponent(table)}`)
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
self.postMessage(data);
|
||||||
|
setTimeout(fetchStats, 5000); // Consulta cada 5 segundos
|
||||||
|
});
|
||||||
|
}
|
||||||
|
fetchStats();
|
||||||
|
};
|
||||||
44
server_side/stats_worker.php
Normal file
44
server_side/stats_worker.php
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
include("../db.php");
|
||||||
|
|
||||||
|
$table = isset($_GET['table']) ? $_GET['table'] : '';
|
||||||
|
$result = [
|
||||||
|
'instruction' => ['min' => '-', 'max' => '-', 'avg' => '-'],
|
||||||
|
'input' => ['min' => '-', 'max' => '-', 'avg' => '-'],
|
||||||
|
'output' => ['min' => '-', 'max' => '-', 'avg' => '-']
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($table && preg_match('/^[a-zA-Z0-9_]+$/', $table)) {
|
||||||
|
$sql = "SELECT
|
||||||
|
MIN(CHAR_LENGTH(instruction)) as min_instruction,
|
||||||
|
MAX(CHAR_LENGTH(instruction)) as max_instruction,
|
||||||
|
AVG(CHAR_LENGTH(instruction)) as avg_instruction,
|
||||||
|
MIN(CHAR_LENGTH(input)) as min_input,
|
||||||
|
MAX(CHAR_LENGTH(input)) as max_input,
|
||||||
|
AVG(CHAR_LENGTH(input)) as avg_input,
|
||||||
|
MIN(CHAR_LENGTH(output)) as min_output,
|
||||||
|
MAX(CHAR_LENGTH(output)) as max_output,
|
||||||
|
AVG(CHAR_LENGTH(output)) as avg_output
|
||||||
|
FROM `$table`";
|
||||||
|
$res = mysqli_query($conn, $sql);
|
||||||
|
if ($res && $row = mysqli_fetch_assoc($res)) {
|
||||||
|
$result['instruction'] = [
|
||||||
|
'min' => $row['min_instruction'] !== null ? $row['min_instruction'] : '-',
|
||||||
|
'max' => $row['max_instruction'] !== null ? $row['max_instruction'] : '-',
|
||||||
|
'avg' => $row['avg_instruction'] !== null ? round($row['avg_instruction'], 2) : '-'
|
||||||
|
];
|
||||||
|
$result['input'] = [
|
||||||
|
'min' => $row['min_input'] !== null ? $row['min_input'] : '-',
|
||||||
|
'max' => $row['max_input'] !== null ? $row['max_input'] : '-',
|
||||||
|
'avg' => $row['avg_input'] !== null ? round($row['avg_input'], 2) : '-'
|
||||||
|
];
|
||||||
|
$result['output'] = [
|
||||||
|
'min' => $row['min_output'] !== null ? $row['min_output'] : '-',
|
||||||
|
'max' => $row['max_output'] !== null ? $row['max_output'] : '-',
|
||||||
|
'avg' => $row['avg_output'] !== null ? round($row['avg_output'], 2) : '-'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
echo json_encode($result);
|
||||||
Loading…
x
Reference in New Issue
Block a user