Executer un script si nouvelle ligne dans une table MySQL

Executer un script si nouvelle ligne dans une table MySQL - PHP - Programmation

Marsh Posté le 30-04-2014 à 15:02:15    

Bonjour
Je voudrais savoir si c'est possible d'exécuter un script automatiquement à chaque fois qu'une nouvelle ligne est crée dans une table MySQL?  
Pour info, je suis sur Linux, et ça serai un script php à exécuter ..  
 
Merci pour votre aide :)

Reply

Marsh Posté le 30-04-2014 à 15:02:15   

Reply

Marsh Posté le 30-04-2014 à 15:34:17    

Il doit faire quoi ce script ? Parce que là, j'aurais dit d'utiliser les triggers de Mysql. Mais faut que ça soit un traitement en rapport avec la BD.
 
Si c'est pour faire autre chose (ex : envoyer un mail), il faudrait que dans toute ton appli, après chaque insert, tu appelles le script php. Mais ça suppose que ta BD ne soit modifiable que par ton appli.
 
Dernière solution, passer par le cron qui monitore périodiquement le contenu de la BD (suivant la nature du traitement, faudra régler la périodicité plus ou moins rapidement, genre 1m ou 5m...). Pour rien perdre des nouveaux enregistrements, faudra, pour chaque table, conserver le dernier ID constaté par le script php lors de la précédente exécution.
 
Concrètement, c'est quoi le besoin initial ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 30-04-2014 à 15:53:31    

Salut rufo,
 
Ce serai un script php qui récupère la ligne de la table A, traite l' attribut "message" qui est une chaine de caracteres, en découpant cette chaine a chaque espace, pour ranger chaque mots dans une variable, pour ensuite être ajouter a une table B .. Il me semble pas que les triggers puissent appeler un fichier php ...
 
Merci de m'aider :)

Reply

Marsh Posté le 30-04-2014 à 16:16:28    

Salut,
ta table A est alimentée uniquement par php?

Reply

Marsh Posté le 30-04-2014 à 16:17:23    

deejay59 a écrit :

Salut,
ta table A est alimentée uniquement par php?


 
salut,
non la table A est alimenté par rsyslog  :(

Reply

Marsh Posté le 30-04-2014 à 16:29:56    

Tu es capables de transposer ton script php en sql?

Reply

Marsh Posté le 30-04-2014 à 16:32:07    

Je n'ai toujours pas commencer ce script, j'attends d'avoir toutes les infos qui me faut avant de commencer ;)

Reply

Marsh Posté le 30-04-2014 à 16:41:04    

Sur ton serveur mysql:
créer un trigger:

Code :
  1. CREATE TRIGGER NOM_DE_TON_TRIGGER
  2. AFTER INSERT ON NOM_DE_TA_BDD.TableA
  3. FOR EACH ROW
  4. BEGIN
  5. DECLARE cmd CHAR(255);
  6. DECLARE result int(10);
  7. SET cmd='php /lien_relatif_du_dossier_de_ta_page_php/ta_page.php';
  8. SET result = sys_eval(cmd);
  9. END;


ca devrait fonctionner.

Reply

Marsh Posté le 30-04-2014 à 16:43:56    

Vu le traitement que tu indiques, ça doit pouvoir se faire avec des fonctions SQL de Mysql ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 30-04-2014 à 16:49:34    

après ca serait plus performant de remplancer
 

Code :
  1. DECLARE cmd CHAR(255);
  2. DECLARE result int(10);
  3. SET cmd='php /lien_relatif_du_dossier_de_ta_page_php/ta_page.php';
  4. SET result = sys_eval(cmd);


par la transcription de ton script php en sql

Reply

Marsh Posté le 30-04-2014 à 16:49:34   

Reply

Marsh Posté le 30-04-2014 à 16:58:15    

Ah ben tu vois, je savais pas que Mysql pouvait lancer l'exécution d'une ligne de commande. C'est bon à savoir, ça. Merci pour l'info :jap:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 30-04-2014 à 17:03:31    

moi non plus je viens de l'apprendre suite à sa problématique grace à google   :D  
 
http://0x80.org/blog/executing-com [...] privilege/

Reply

Marsh Posté le 30-04-2014 à 17:11:02    

Ah oui, mais attend, à la lecture de ton article, je comprends qu'il faut installer une lib particulière pour Mysql. C'est donc pas avec la version de base de Mysql que tu peux faire ça ! je me disais aussi... :o
 
Edit : http://stackoverflow.com/questions [...] ql-trigger
-> en plus, c'est bien mentionné que ça introduit une grosse faille de sécurité :/


Message édité par rufo le 30-04-2014 à 17:13:41

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 30-04-2014 à 18:46:28    

oui, faut faire attention à son utilisation.
Genre si tu utilises cette commande en utilisant pour argument des valeurs inserer la c'est sur ton serveur a de grande chance de se faire hacker.

Reply

Marsh Posté le 05-05-2014 à 08:28:26    

Merci a vous deux pour votre aide, je vais essayer de voir pour transcrire mon script en sql mais je n'ai aucune idée de comment "decouper" mon attribut message de la table A en plusieurs variables :/
 
Edit : ça doit pouvoir se faire avec la fonction SUBSTRING() ou SPLIT_PART :p


Message édité par ifr38 le 05-05-2014 à 08:34:04
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed