Files
SMANAGE/php/test-mysql.php
T

64 lines
2.0 KiB
PHP

<?php
// test-mysql.php - 独立测 MySQL 握手耗时 + 列出 nc 相关 db
error_reporting(E_ALL);
ini_set('display_errors', '1');
$creds = [
'host' => '127.0.0.1',
'port' => 3306,
'user' => 'root',
'pass' => '1Qq@1Qq@190*',
];
echo "=== 1) TCP 3306 握手耗时 ===\n";
$start = microtime(true);
$fp = @fsockopen($creds['host'], $creds['port'], $errno, $errstr, 5);
$elapsed = round((microtime(true) - $start) * 1000);
if ($fp) {
echo " TCP connect OK in {$elapsed}ms\n";
fclose($fp);
} else {
echo " TCP connect FAILED: $errstr ($errno) in {$elapsed}ms\n";
exit(1);
}
echo "\n=== 2) MySQL PDO 握手 ===\n";
$start = microtime(true);
try {
$dsn = "mysql:host={$creds['host']};port={$creds['port']};charset=utf8mb4";
$pdo = new PDO($dsn, $creds['user'], $creds['pass'], [
PDO::ATTR_TIMEOUT => 10,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$elapsed = round((microtime(true) - $start) * 1000);
echo " PDO connect OK in {$elapsed}ms\n";
$ver = $pdo->query('SELECT VERSION()')->fetchColumn();
echo " MySQL version: $ver\n";
echo "\n=== 3) Nextcloud 相关 db ===\n";
$dbs = $pdo->query('SHOW DATABASES')->fetchAll(PDO::FETCH_COLUMN);
foreach ($dbs as $d) {
$l = strtolower($d);
if (strpos($l, 'nextcloud') !== false || strpos($l, 'nc_') !== false) {
echo " - $d\n";
}
}
echo "\n=== 4) nextcloud db 表数(如果存在)===\n";
foreach ($dbs as $d) {
$l = strtolower($d);
if (strpos($l, 'nextcloud') !== false) {
$pdo->exec("USE `$d`");
$tables = $pdo->query('SHOW TABLES')->fetchAll(PDO::FETCH_COLUMN);
echo " $d: " . count($tables) . " tables\n";
if (count($tables) > 0 && count($tables) < 20) {
foreach ($tables as $t) echo " - $t\n";
}
}
}
} catch (Throwable $e) {
$elapsed = round((microtime(true) - $start) * 1000);
echo " PDO connect FAILED in {$elapsed}ms: " . $e->getMessage() . "\n";
}