IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

OPTIMIZE TABLE via script php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut OPTIMIZE TABLE via script php
    Bonjour,

    J'ai une table qui fait l'objet de beaucoup de mouvements et il faut l'optimiser souvent.

    Via phpMyAdmin, c'est facile :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    OPTIMIZE TABLE 'ma_table'

    Pour automatiser la chose j'ai tenté d'entrer la requête dans un script PHP exécuté deux fois par jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = "OPTIMIZE TABLE 'ma_table'";
    msqli_query ($connexion, $requete);
    Il ne se passe rien.

    Ai-je oublié quelque chose ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu attends qu'il se passe quoi ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour Sabotage,

    J'attends que la commande OPTIMIZE TABLE soit exécutée et que ma table soit défragmentée.

    Dans phpAdmin, je vois une perte de mettons 50 Ko et un lien OPTIMIZE TABLE.
    Si je clique sur le lien la perte disparaît.

    Si je passe par PHP la perte demeure dans phpAdmin, donc je me dis qu'il ne s'est rien passé.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as regardé les données retournées par la requête quand tu l'executes par PHP ?

    Quand même il est anormal de devoir faire cette opération deux fois par jour.
    C'est une table Innodb ou Myisam ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Citation Envoyé par sabotage Voir le message
    Tu as regardé les données retournées par la requête quand tu l'executes par PHP ?
    Comment puis-je faire ?

    Citation Envoyé par sabotage Voir le message
    Quand même il est anormal de devoir faire cette opération deux fois par jour.
    C'est une table Innodb ou Myisam ?
    Myisam
    Il s'agit d'une table de paniers sur un site marchand.
    Si le client passe une commande le panier est enregistré dans une table des commandes et éliminé de la table des paniers.
    Du coup la table des paniers est un peu fragmentée et phpMyAdmin affiche le choix Optimize table.
    Je me doute que ce n'est pas critique, mais actuellement j'optimise 2 fois par jour par phpMyAdmin et je veux inclure cette commande dans un script PHP.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $requete = "OPTIMIZE TABLE 'ma_table'";
    if (msqli_query ($connexion, $requete) == TRUE) echo 'ma_table est optimisée' ;
    En l'occurence il n'y a pas d'echo.

    Je ne vois pas où est l'erreur, je précise que $connexion est bon.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Je reviens sur ce sujet;

    Toutes les requêtes SQL peuvent être exécutées via un script PHP, non ?

    J'en ai un peu assez de faire mes requêtes d'optimisation à la main via PHPMyAdmin, je veux les automatiser dans un script PHP de maintenance.

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as pas repondu sur Myisam / innodb.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Myisam

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans ton code c'est bien "mysqli_query" et non "msqli_query" comme tu nous montres ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Merci de ton suivi.

    Copier-coller de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = "OPTIMIZE TABLE 'matable'";
    if (mysqli_query ($connexion, $requete) == TRUE) echo '<br>matable est optimisée' . "\n";
    Et il ne se passe rien.
    $connexion est bon, c'est sûr.

    Est-ce que cela peut être dû au serveur (Mutu OVH) qui pour raison de sécurité refuse ce type de requête via PHP ?

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est plutôt le cas "faux" qui nous intéresse puisque ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!mysqli_query ($connexion, $requete)) echo $mysqli->error;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!mysqli_query ($connexion, $requete)) echo $mysqli->error;
    Il ne se passe rien et je n'ai pas de message d'erreur.

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que ton serveur affiche les erreurs ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Je n'ai aucun message d'erreur.

    Je vais essayer de savoir ce qu'en pense le support OVH mais ils prennent en général quelques jours pour répondre.

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as peut être accès à un log PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Franchement dans le bazar du manager OVH je ne trouve pas.

    J'ai laissé un message à l'assistance, je te tiens au courant.

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Pour une fois le sujet est documenté chez OVH

    Je devrais m'en sortir avec leur tuto, je vous tiens au courant.

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    La documentation OVH n'apporte rien de bien nouveau.

    La requête de base reste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete = "OPTIMIZE TABLE 'ma_table'";
     
    if (!mysqli_query ($connect, $requete)) echo mysqli_error ($connect);
    Je me prends :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''matable'' at line 1
    Un peu énervant car je ne vois pas d'erreur de syntaxe dans une requête aussi simple.

    Je suppose donc que c'est OVH qui refuse ce type de requêtes, du moins pour mon offre.
    J'ai demandé à leur "support".

  20. #20
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    il n'y a pas d'apostrophes pour les noms de table.

    Soit directement
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    OPTIMIZE TABLE ma_table
    soit des backticks
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    OPTIMIZE TABLE `ma_table`
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/11/2007, 14h52
  2. [MySQL] Recherche BDD MySQL via script PHP
    Par poitierjohan dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/10/2007, 13h12
  3. Redémarrer Apache via script PHP
    Par neojick dans le forum Apache
    Réponses: 2
    Dernier message: 20/09/2007, 18h12
  4. Insertion multiples via script php
    Par furtif1 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/04/2007, 18h03
  5. [Système] Droit d'écriture via script php
    Par winnie82 dans le forum Langage
    Réponses: 4
    Dernier message: 10/04/2006, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo