Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/08/2007, à 20:03

minist77

Optimiser ses bases mysql avec une tâche cron

Bonsoir,

j'aimerais savoir comment optimiser toutes ses bases mysql avec une tâche cron, tous les matins à 3h00; comment faire?
Je sais comment faire une tâche cron, mais j'arrive pas à trouver la bonne syntaxe pour mettre une optimisation des bases mysql..

++

#2 Le 17/08/2007, à 17:24

minist77

Re : Optimiser ses bases mysql avec une tâche cron

personne? sad

#3 Le 22/08/2007, à 04:35

minist77

Re : Optimiser ses bases mysql avec une tâche cron

up..

#4 Le 22/08/2007, à 05:16

foustala

Re : Optimiser ses bases mysql avec une tâche cron

minist77 a écrit :

optimisation des bases mysql..

Comment fais tu sans cron?

Hors ligne

#5 Le 03/09/2007, à 12:21

minist77

Re : Optimiser ses bases mysql avec une tâche cron

hello,

j'ai trouvé ce script sur le net:

<?php
echo '<pre>' . "\n\n";
set_time_limit( 100 );

  $time = microtime();
  $time = explode(' ', $time);
  $time = $time[1] + $time[0];
  $start = $time;
  
//Connection variables :
$h = 'localhost';
$u = 'root';
$p = 'password';

$dummy_db = 'mysql';

/*The php->mysql API needs to connect to a database even when executing scripts like this.
 If you got an error from this(permissions),
 just replace this with the name of your database*/

$db_link = mysql_connect($h,$u,$p);

$res = mysql_db_query($dummy_db, 'SHOW DATABASES', $db_link) or die('Could not connect: ' . mysql_error());
echo 'Found '. mysql_num_rows( $res ) . ' databases' . "\n";
$dbs = array();
while ( $rec = mysql_fetch_array($res) )
{
$dbs [] = $rec [0];
}

foreach ( $dbs as $db_name )
{
echo "Database : $db_name \n\n";
$res = mysql_db_query($dummy_db, "SHOW TABLE STATUS FROM `" . $db_name . "`", $db_link) or die('Query : ' . mysql_error());
$to_optimize = array();
while ( $rec = mysql_fetch_array($res) )
{
if ( $rec['Data_free'] > 0 )
{
$to_optimize [] = $rec['Name'];
echo $rec['Name'] . ' needs optimization' . "\n";
}
}
if ( count ( $to_optimize ) > 0 )
{
foreach ( $to_optimize as $tbl )
{
mysql_db_query($db_name, "OPTIMIZE TABLE `" . $tbl ."`", $db_link );
}
}
}

$time = microtime();
  $time = explode(' ', $time);
  $time = $time[1] + $time[0];
  $finish = $time;
  $total_time = round(($finish - $start), 6);
  echo 'Parsed in ' . $total_time . ' secs' . "\n\n";
?>

je voudrais m'assurer qu'il est "compatible" avec mysql5 et si je pouvais l'utiliser sans risques, je ne m'y connais pas beaucoup pour savoir si le code est fiable^^

Par ailleurs, je crois comprendre qu'il n'optimise qu'une seule base.. comment faire pour que ça optimise toutes les bases de mon serveur mysql?

merci d'avance smile


++

#6 Le 03/09/2007, à 14:15

inazo

Re : Optimiser ses bases mysql avec une tâche cron

Salut à vous,

Bon je viens de lire ton script il va donc optimiser normalement toutes tes bases. Même si à mon goût il y a des choses que l'on ne devrait pas trouver dans un tel script...

Bref pour les cron il suffit de faire une tache cron qui appellera ta page ou se trouve ton script. Cependant je ne peux t'aider pour les taches cron mais je crois qu'il y a une documentation sur Ubuntu-fr.

Cordialement Inazo.


Processeur : AMD 64 3500+ / Carte Graphique : ATI X800Pro AGP(8x) / Carte mère : Asus A8V Deluxe / HDD : Hitachi Deskstars 750 160Go / Accélération 3D : Online / GuildWars : On / Compiz : Plantage fréquent ...

Hors ligne

#7 Le 03/09/2007, à 16:01

minist77

Re : Optimiser ses bases mysql avec une tâche cron

inazo a écrit :

à mon goût il y a des choses que l'on ne devrait pas trouver dans un tel script...

erf, quoi donc?

pour mettre en tâche cron je m'en sors, j'ai appris le principe^^

++

#8 Le 03/09/2007, à 16:11

inazo

Re : Optimiser ses bases mysql avec une tâche cron

Ce qui me dérange c'est l'utilisation des \n il faut utiliser du html avec des br par exemple ou encore le fait d'afficher les erreurs Sql on met un or die(); pas un or die( mysql_error()) car si tu mets ta page en production et qu'une autre personne la trouve et fait une erreur elle pourrait avoir des informations importantes.

Voilà c'est juste pour cela, et un script qui s'éxécute tout seul à 3 heures du matin n'a pas besoin de faire d'affichage.

Cordialement Inazo.


Processeur : AMD 64 3500+ / Carte Graphique : ATI X800Pro AGP(8x) / Carte mère : Asus A8V Deluxe / HDD : Hitachi Deskstars 750 160Go / Accélération 3D : Online / GuildWars : On / Compiz : Plantage fréquent ...

Hors ligne