Script PHP - Optimiser toutes les bases de données.
13 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
Script PHP - Optimiser toutes les bases de données.
Bonjour,
Je souhaiterai savoir s'il existe un script permettant d'optimiser toutes les bases de données, sans devoir renseigner quel bases sont existantes.
Ceci pour but sur un dédié de lancer le script une fois par mois...
Je souhaiterai savoir s'il existe un script permettant d'optimiser toutes les bases de données, sans devoir renseigner quel bases sont existantes.
Ceci pour but sur un dédié de lancer le script une fois par mois...
-

Audiofeeline - WRInaute accro

- Messages: 5257
- Inscription: 20 Oct 2005
Il y a effectivement une commande mais là , je ne me rappel plus trop...
Regarde sur les sites de PHP, ça doit être mis quelque part...
Regarde sur les sites de PHP, ça doit être mis quelque part...
- Oncle Tom
- WRInaute impliqué

- Messages: 812
- Inscription: 31 Mar 2003
Je te laisse le soin de faire le script mais je te donne les 3 requêtes qui te serviront à construire le tout.
(dans celle-là , ne te sers que des lignes où Data_free > 0)
Puis pour finir
Au besoin je te ponds le code entier
- Code: Tout sélectionner
SHOW DATABASES
- Code: Tout sélectionner
USE {$database}
- Code: Tout sélectionner
SHOW TABLE STATUS
(dans celle-là , ne te sers que des lignes où Data_free > 0)
Puis pour finir
- Code: Tout sélectionner
OPTIMIZE TABLE {$table}
Au besoin je te ponds le code entier
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
Merci je fais chercher un peu...
En fait ça je connaissais:
OPTIMIZE TABLE
Mais je sais que l'on pouvait le faire pour une table spécifique (donc il faut connaitre toutes les tables, un peu fastidieux, si l'on en rajoute chaque foi..).
Le truc est que je suis entrain de chercher une méthode pas trop lourde pour lister les table, ou simplement le fiare d'une manière global sur toute les tables, un genre de ALL.
En fait ça je connaissais:
OPTIMIZE TABLE
Mais je sais que l'on pouvait le faire pour une table spécifique (donc il faut connaitre toutes les tables, un peu fastidieux, si l'on en rajoute chaque foi..).
Le truc est que je suis entrain de chercher une méthode pas trop lourde pour lister les table, ou simplement le fiare d'une manière global sur toute les tables, un genre de ALL.
- Oncle Tom
- WRInaute impliqué

- Messages: 812
- Inscription: 31 Mar 2003
Petite astuce, voici à quoi servent respectivement les requêtes que je t'ai donné :
- Lister les bases de données
- Sélectionner une base de données
- Lister les tables de la base en cours d'utilisation (cf #2)
- Optimiser une table donnée
- Oncle Tom
- WRInaute impliqué

- Messages: 812
- Inscription: 31 Mar 2003
-_- OK bon spa grave, j'te fais le script ça ira plus vite.
(en cours d'utilisation : cf #2 avec le USE database, ça concerne la base, pas la table et indépendamment de ce que tes scripts font ailleurs).
Bref j'te fais ça quand je peux hein.
(en cours d'utilisation : cf #2 avec le USE database, ça concerne la base, pas la table et indépendamment de ce que tes scripts font ailleurs).
Bref j'te fais ça quand je peux hein.
- Oncle Tom
- WRInaute impliqué

- Messages: 812
- Inscription: 31 Mar 2003
- Code: Tout sélectionner
<?php
$mysql_connexion = mysql_connect('localhost', '***', '***', true);
//ETAPE 1 : on liste les bases de données
$db = array();
$mysql_query = mysql_query("SHOW DATABASES;");
while( $ligne = mysql_fetch_assoc($mysql_query) )
{
array_push($db, $ligne['Database']);
}
//ETAPE 2 : pour chaque base, on liste les tables pour ne conserver que celles qu'on optimisera
foreach( $db as $database )
{
mysql_query("USE `{$database}`");
//
$tables = array();
$mysql_query = mysql_query("SHOW TABLE STATUS;");
while( $ligne = mysql_fetch_assoc($mysql_query) )
{
//seulement s'il y a des pertes de données
if( $ligne['Data_free'] > 0 )
{
array_push($tables, '`'.$ligne['Name'].'`');
}
}
//Optimisation
$tables = implode(',', $tables);
mysql_query("OPTIMIZE TABLES {$tables};");
}
//ETAPE 3 : on clôture la connexion
mysql_close($mysql_connexion);
unset($mysql_connexion, $mysql_query, $tables, $database, $db, $ligne);
?>
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
Une question:
Avec le USE pourquoi les `{ }` ?
http://dev.mysql.com/doc/refman/5.0/fr/use.html
ici ils ne sont pas mentionné ? une sécurité ?
Pareil pour ça :
Je ne comprends pas les `.
Avec le USE pourquoi les `{ }` ?
http://dev.mysql.com/doc/refman/5.0/fr/use.html
ici ils ne sont pas mentionné ? une sécurité ?
Pareil pour ça :
- Code: Tout sélectionner
array_push($tables, '`'.$ligne['Name'].'`');
Je ne comprends pas les `.
- Oncle Tom
- WRInaute impliqué

- Messages: 812
- Inscription: 31 Mar 2003
Normal car là ça concerne PHP. Ca permet de bien délimiter la variable qu'on utilise dans une chaîne.
revient au même que
A part que la deuxième écriture est un poil plus rapide mais plus chiante à lire (à mes yeux).
Pour l'histoire de l'array_push, je stocke dans un tableau le nom des tables encadrées avec des ` (pour éviter des problèmes de mots clés réservés à MySQL). C'est tout. tu peux les enlever mais si un jour tu nommes mal une table, ça la fera planter ^^
- Code: Tout sélectionner
"USE `{$database}`"
revient au même que
- Code: Tout sélectionner
"USE `".$database."`"
A part que la deuxième écriture est un poil plus rapide mais plus chiante à lire (à mes yeux).
Pour l'histoire de l'array_push, je stocke dans un tableau le nom des tables encadrées avec des ` (pour éviter des problèmes de mots clés réservés à MySQL). C'est tout. tu peux les enlever mais si un jour tu nommes mal une table, ça la fera planter ^^
13 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Optimiser un base de données en php ?
- OVH et bases de données
- Moteurs de recherche et bases de données
- Multi-domaine et bases de données
- 1and1 et blocage de bases données
- Un forum, plusieurs bases de données
- Plusieurs bases de données ? [Réglé]
- [SQL] Copie de bases de données
- Sauvegarder des grosses bases de données
- Compatibilité des bases de données annuaires
Consultez la description détaillée des produits ou services de Google suivants : Google AdWords API
- Positionnement sur data centers Google
Cet outil vous permet d'afficher sur une seule page les résultats Google effectués sur de nombreux data centers (centres de données).
Qui est en ligne
Utilisateurs parcourant ce forum: Google [Bot] et 0 invités
