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 :

Supprimer une table après un certain temps


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 163
    Par défaut Supprimer une table après un certain temps
    Bonjour,
    je souhaite supprimer (DROP) une table Mysql après un certain temps de maintenant (des minutes ou des heures)

    J'ai réussi à créer une table avec PHP PDO mais je souhaite en même temps pouvoir la supprimer au bout de quelques heures ou quelques minutes de sa création (ex : 10 minutes ou 3 heures) en utilisant une requête PHP PDO.

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    Je n'ose pas demander pourquoi tu as besoin de ce genre de manipulations

    Juste après création de la table $table_name, tu peux créer un EVENT de suppression :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql = <<<SQL
        CREATE EVENT `drop_table_{$table_name}`
        ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 MINUTE -- Suppression dans 10 minutes
        ON COMPLETION NOT PRESERVE
        DO DROP TABLE `{$table_name}`;
        SQL;
     
    $pdo->exec($sql);

    https://dev.mysql.com/doc/refman/9.3...scheduler.html
    https://dev.mysql.com/doc/refman/9.3...ate-event.html
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 163
    Par défaut
    Merci SEB
    J'ai essayé mais cela ne marche pas. Sur les forums j'ai vu que cela peut venir du fait que MysQl n'accepte pas le "statement" "CREATE EVENT"

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    Quel est le message d'erreur ?

    Il faut peut-être activer le scheduler => https://dev.mysql.com/doc/refman/9.3...iguration.html
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 633
    Billets dans le blog
    10
    Par défaut
    "ça ne marche pas" n'est pas un message d'erreur précis...
    Merci de communiquer le message d'erreur exact.

    En l'attente, vérifiez que avez bien le privilège requis pour faire le DROP de la table concernée.

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 163
    Par défaut
    En effet SEB, j'ai lancé une requête "SELECT @@event_scheduler" et la réponse MySql était "OFF"

    J'ai voulu activer le scheduler avec la requête "SET @@GLOBAL.event_scheduler = 1;"

    La réponse était ce message d'erreur : "#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation"

    Merci Escartefigue

  7. #7
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 163
    Par défaut
    J'ai oublié de dire que tous les événements sont toujours stockés dans MySql (en attente d'exécution). D'où l'absence de message d'erreur.

  8. #8
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 163
    Par défaut
    Bonjour
    quelqu'un pourrait me dire comment débloquer la situation de "access denied" et trouver une solution au message d'erreur "#1227" ? J'ai essayé de voir comment m'octroyer un "SUPER PRIVILEGE" sur MySql mais il n'y a pas grand chose. J'ai ajouté une instruction "[mysqld event_scheduler = 1]" dans "my.ini" mais cela n'a pas eu d'effet. Le "event_scheduler" est toujours "OFF" sur MySql.

    Merci

  9. #9
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    Pour les droits => https://dev.mysql.com/doc/refman/9.3...rivileges.html

    J'ai ajouté une instruction "[mysqld event_scheduler = 1]"
    Elle n'est pas bonne cette syntaxe.
    Montre-nous le my.ini tel qu'il est réellement.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #10
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 163
    Par défaut
    Nom : capture_my_ini_mysql.JPG
Affichages : 88
Taille : 108,3 Ko

    voici une capture écran du fichier my.ini (bloc note) "MySql 5.7.6"

  11. #11
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    Tu ne montres pas la section du scheduler.
    Un copier-coller du fichier suffit.

    MySql 5.7.6
    On en est à MySQL 9.3, MySQL 5.7.6 date de 2015
    Tu t'exposes à des problèmes de compatibilité si jamais un jour ton projet tourne sur un "vrai" serveur.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  12. #12
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 163
    Par défaut
    La section du schudeler c'est moi qui l'ai ajouté (en suivant un conseil donné sur un forum).

    La version du MySql est celle avec quoi j'ai commencé.

    D'ailleurs, j'ai le même problème avec php.ini qui est devenu obsolète depuis un des années (je ne savais pas qu'il fallait le mettre à jour, puisque je n'ai reçu aucune notification. Ou peut-être n'avais-je pas fait attention).

    J'ai essayé de mettre à jour les versions php.ini sur mon espace client hébergeur (ionos). Problème : les pages ne s'affichent plus correctement (comme avant). J'ai été obligé de revenir aux versions précédentes (obsolète). Sinon je dois modifier toutes les pages une par une (j'en ai beaucoup, vraiment beaucoup).

    Maintenant je paie très cher la version php.ini que l'hébergeur a mis en place automatiquement. Problème : je n'ai plus accès à php.ini. Pour faire une modification sur la capacité de "upload size" j'ai été obligé de créer un "php.ini" et l'envoyer sur le serveur. Problème : la date_time sur certaines pages ne s'affiche plus. J'ai été obligé d'ajouter une instruction dans le php.ini créé pour palier à ce nouveau problème.

    * Avez-vous une solution pour ce problème de php.ini ?

    * Comment puis-je mettre à jour la version MySql ? Cela ne risque-t-il d'affecter le fonctionnement de ma db ?

  13. #13
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    La section du schudeler c'est moi qui l'ai ajouté (en suivant un conseil donné sur un forum).
    Oui et on ne la voit pas en ambiance, du coup tu ne réponds pas à la question.

    La version du MySql est celle avec quoi j'ai commencé.
    MySQL sort une nouvelle màj tous les 3 mois.
    Tu peux suivre les màjs ici => https://dev.mysql.com/doc/relnotes/m...ews-9-4-0.html

    D'ailleurs, j'ai le même problème avec php.ini qui est devenu obsolète depuis un des années (je ne savais pas qu'il fallait le mettre à jour, puisque je n'ai reçu aucune notification. Ou peut-être n'avais-je pas fait attention).
    PHP sort aussi des màjs régulièrement, tu peux les consulter sur https://php.net/
    Les versions supportées => https://www.php.net/supported-versions.php
    Tu y trouveras les guides de migration

    Nom : PHP-Versions.png
Affichages : 76
Taille : 122,3 Ko

    J'ai essayé de mettre à jour les versions php.ini sur mon espace client hébergeur (ionos). Problème : les pages ne s'affichent plus correctement (comme avant). J'ai été obligé de revenir aux versions précédentes (obsolète). Sinon je dois modifier toutes les pages une par une (j'en ai beaucoup, vraiment beaucoup).
    Cela mérite une discussion à part entière.
    D'une manière générale il faut se tenir informé des màjs PHP (1 grosse par an + 1 màj de sécurité/bugfix / mois), suivre les bonnes pratiques et ne pas utiliser des fonctionnalités dépréciées ou obsolètes.

    Comment puis-je mettre à jour la version MySql ? Cela ne risque-t-il d'affecter le fonctionnement de ma db ?
    Cela dépend de ton installation et de ton environnement.
    Et oui cela peut affecter le fonctionnement de ta BdD car MySQL a beaucoup évolué en 10 ans.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  14. #14
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 163
    Par défaut
    Merci Beaucoup SEB pour ce travail

    BRAVOOOOOOOO !

Discussions similaires

  1. [SQL-Server] Supprimer des données après un certains temps dépassé
    Par SHEYPT dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/12/2022, 14h15
  2. Couper une connexion après un certain temps d'inactivité.
    Par berceker united dans le forum JDBC
    Réponses: 1
    Dernier message: 25/11/2016, 11h43
  3. Détruire une session après un certain temps
    Par Seb2913 dans le forum Langage
    Réponses: 8
    Dernier message: 04/08/2015, 22h36
  4. Comment fermer une popup après un certains temps ?
    Par magic8392 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/10/2005, 12h06
  5. Ouvrir une fenêtre et la fermer après un certain temps
    Par MiJack dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/03/2005, 17h16

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