Added Installed Modules, Database stats such as Number Tables, fields, rows and db size, php, mysql and OS Versions, along with upload directory stats including file count and size

This commit is contained in:
johnnyq 2023-05-31 13:31:03 -04:00
parent eb99807214
commit 386eb0c382
1 changed files with 140 additions and 1 deletions

View File

@ -3,6 +3,36 @@ require_once("inc_all_settings.php");
require_once("database_version.php");
require_once("config.php");
$folderPath = 'uploads';
function countFilesInDirectory($dir) {
$count = 0;
$size = 0;
$files = scandir($dir);
foreach ($files as $file) {
if ($file === '.' || $file === '..') {
continue;
}
$filePath = $dir . '/' . $file;
if (is_file($filePath)) {
$count++;
$size += filesize($filePath);
} elseif (is_dir($filePath)) {
$result = countFilesInDirectory($filePath);
$count += $result['count'];
$size += $result['size'];
}
}
return [
'count' => $count,
'size' => $size
];
}
// Function to compare two arrays recursively and return the differences
function arrayDiffRecursive($array1, $array2) {
$diff = array();
@ -81,7 +111,7 @@ function fetchDatabaseStructureFromServer() {
}
}
$mysqli->close();
//$mysqli->close();
return $tables;
}
@ -115,6 +145,7 @@ $differences = arrayDiffRecursive($desiredStructure, $currentStructure);
<div class="card-body">
<h3>Database Structure Check</h3>
<?php
if (empty($differences)) {
echo "The database structure matches the desired structure.";
@ -124,6 +155,114 @@ $differences = arrayDiffRecursive($desiredStructure, $currentStructure);
}
?>
<hr>
<h4>Database stats</h4>
<?php
// Query to fetch the number of tables
$tablesQuery = "SHOW TABLES";
$tablesResult = $mysqli->query($tablesQuery);
// Check if the query was successful
if ($tablesResult) {
$numTables = $tablesResult->num_rows;
$numFields = 0;
$numRows = 0;
// Loop through each table
while ($row = $tablesResult->fetch_row()) {
$tableName = $row[0];
// Query to fetch the number of fields
$fieldsQuery = "DESCRIBE `$tableName`";
$fieldsResult = $mysqli->query($fieldsQuery);
// Check if the query was successful
if ($fieldsResult) {
$numFields += $fieldsResult->num_rows;
// Query to fetch the number of rows
$rowsQuery = "SELECT COUNT(*) FROM `$tableName`";
$rowsResult = $mysqli->query($rowsQuery);
// Check if the query was successful
if ($rowsResult) {
$numRows += $rowsResult->fetch_row()[0];
} else {
echo "Error executing query: " . $mysqli->error;
}
} else {
echo "Error executing query: " . $mysqli->error;
}
}
echo "Number of tables: " . $numTables . "<br>";
echo "Total number of fields: " . $numFields . "<br>";
echo "Total number of rows: " . $numRows . "<br>";
} else {
echo "Error executing query: " . $mysqli->error;
}
// Query to fetch the database size
$query = "SELECT table_schema AS 'Database', SUM(data_length + index_length) / (1024 * 1024) AS 'Size (MB)'
FROM information_schema.TABLES WHERE table_schema = '$database'
GROUP BY table_schema";
$result = $mysqli->query($query);
// Check if the query was successful
if ($result) {
$row = $result->fetch_assoc();
$dbSize = $row['Size (MB)'];
echo "Database Size: " . $dbSize . " MB";
} else {
echo "Error executing query: " . $conn->error;
}
?>
<hr>
<h3>Installed PHP Modules</h3>
<?php
$loadedModules = get_loaded_extensions();
foreach ($loadedModules as $module) {
echo $module . "<br>";
}
?>
<hr>
<h3>Versions</h3>
<?php
$phpVersion = phpversion();
echo "PHP version: " . $phpVersion;
echo "<br>";
$mysqlVersion = $mysqli->server_version;
echo "MySQL Version: " . $mysqlVersion;
echo "<br>";
$operatingSystem = shell_exec('uname -a');
echo "Operating System: " . $operatingSystem;
?>
<hr>
<h3>File System</h3>
<?php
$result = countFilesInDirectory($folderPath);
$totalFiles = $result['count'];
$totalSizeMB = round($result['size'] / (1024 * 1024), 2);
echo "Total number of files in $folderPath and its subdirectories: " . $totalFiles . "<br>";
echo "Total size of files in $folderPath and its subdirectories: " . $totalSizeMB . " MB";
?>
<hr>
</div>
</div>