64 lines
2.0 KiB
PHP
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";
|
|
}
|