FAQ |
Kalender |
2006-11-30, 06:41 | #1 | ||
|
|||
Medlem
|
Om man har ett antal konton/domäner på en burk. Varje konto har en mysql databas samt ett antal tabeller.
Om man skulle vilja köra optimize på allt (alla konton/domäner), alltså inte välja enskild databas samt tabell. Går det att göra så? |
||
Svara med citat |
2006-11-30, 09:53 | #2 | ||
|
|||
Medlem
|
Går att göra med valfritt scriptspråk som kan prata med MySQL-servern. Nånting sånt här borde fungera i PHP. Inte testkört, men eventuella fel borde vara enkla att rätta till. Används vanliga mysql-extension istället för mysqli så behöver man bara kasta bort i'na från funktionsnamnen och plocka bort $mysqli från argumenten.
Kod:
<?php // se till att bli klar om scriptet kallas från en webläsare set_time_limit(0); ignore_user_abort(1); // anslut till mysql $mysqli = mysqli_connect('host', 'användare', 'lösen'); // databaser som ej ska röras $databases_skip = array('mysql', 'information_schema', 'test'); // hämta alla databaser $databases = array(); $q = mysqli_query($mysqli, "SHOW DATABASES"); while ($row = mysqli_fetch_row($q)) { if (!in_array($row[0], $databases_skip)) { $databases[] = $row[0]; } } // för varje databas... foreach ($databases as $database) { // ... hämtas alla tabeller... $q = mysqli_query($mysqli, "SHOW TABLES IN " . mysqli_real_escape_string($mysqli, $database)); while ($row = mysqli_fetch_row($q)) { // ... som sedan optimeras mysqli_query($mysqli, "OPTIMIZE TABLE " . mysqli_real_escape_string($mysqli, $row[0])); } } ?> |
||
Svara med citat |
2006-11-30, 12:51 | #3 | ||
|
|||
Medlem
|
Bugfix.
mysqli_query($mysqli, "OPTIMIZE TABLE " . mysqli_real_escape_string($mysqli, $row[0])); ändras till mysqli_query($mysqli, "OPTIMIZE TABLE " . mysqli_real_escape_string($mysqli, $database) . "." . mysqli_real_escape_string($mysqli, $row[0])); |
||
Svara med citat |
2006-11-30, 19:45 | #4 | ||
|
|||
Medlem
|
Tackar för hjälpen. Har dock inte haft tid att prova det. Ska titta på det i helgen.
|
||
Svara med citat |
Svara |
|
|