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

Langage PHP Discussion :

faire un trigger


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 27
    Par défaut faire un trigger
    Bonjour, ma demande est assez simple, en fait j'ai un traitement à effectuer chaque jour, mais comment faire pour faire?
    Voici en pseudo-code ce que je voudrais réaliser:
    Pour chaque nouveau jour
    Traitement
    Fin pour

    Une autre version qui revient au même:
    Si nouveau jour
    Traitement
    Fin si

    En fait le traitement consiste à l'envoie d'un mail mais ça n'a pas d'importance. Je ne sais pas faire le "si" ou le "pour".
    Est-ce faisaible? Quelqu'un peut m'aider et sait comment faire?
    D'avance merci.

  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
    Par défaut
    Il faudrait savoir ce que tu veux faire pour bien te répondre.

    Si tu souhaites juste envoyer un mail tous les jours, il faut définir un lancement périodique de ton script sur ton serveur.

    Si tu souhaites qu'utilisateur ne puisse envoyer qu'un seul mail par jour, il faut déjà tracer ses envois de mails (base de donnée) et a chaque fois qu'il envoi un mail, vérifier s'il ne l'a pas déjà fait pour le jour en cours.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 27
    Par défaut
    Je veux que ce soit moi qui envoie un mail chaque jour.
    Mais comment faire pour définir un lancement périodique de mon script?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    Bonjour,

    Voila un petit cours sur les différentes maniéres de faire un cron, y compris en php, ce qui est pratique s'il on a pas la main sur le serveur.

    http://matthieu.developpez.com/execution_periodique/

    PS: Le cours date mais la méthode PHP marche encore.

    EDIT: Ce qui peut ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
     
    // Paramétre d'execution du script
    set_time_limit(0);
    ignore_user_abort(1);
     
    while(1)
    {
    	// on dort 86400s soit 24h en seconde
    	sleep(86400);
     
    	// Envoie d'un mail simple
    	$mailer = "expediteur@ton-site.com";
    	$subject = "Mail automatique";
    	$content = "Le cron s'est bien executé";
    	mail($mailer,$subject,$content);	
    }
     
    ?>

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 27
    Par défaut
    Ok, merci Ponzu mais y'a un truc que je comprends pas.
    Sur le lien que tu me donnes, le tuto explique qu'avec at la méthode d'exécution du script php est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    at hh:mm /Every:jour1,jour2,jour3[...] "chemin\absolu\vers\php.exe -f chemin\vers\le\script"
    Problème: dans quoi dois-je taper cette ligne?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    EDIT: Excuse moi, j'avais pas vu que tu parlais de At , malheureusement je ne connais que très mal l'univers windows , je ne pourrais donc pas te conseillé à part d'essayer la deuxième méthode ci-dessous.

    EDIT2: Je pense que tu dois taper la commande at dans un invité de commande.

    Comme il le dis au début du tuto:

    - soit tu tape "php -f chemin\vers\le\cron.php" dans un shell ( si tu es sous UNIX ou linux). N'oublies pas de modifier le chemin que j'ai mis.

    - soit tu l'exécute depuis un autre script, par exemple depuis un panel d'administration si tu veux faire quelquechose de jolie, sinon à l'arrache dans une page avec exec() (par exemple) mais ça dépendra de la valeur de safe_mode du serveur.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 27
    Par défaut
    Waho!
    Bon, j'ai des questions.
    1- Si je tape at hh:mm /Every:jour1,jour2,jour3[...] "chemin\absolu\vers\php.exe -f chemin\vers\le\script" dans la commande windows, mon script s'effectuera automatiquement tous les jours?
    2- Mais si je fais exec() depuis un autre script, le script dans l'exec ne s'effectuera que si le premier php est appelé, non?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    Ne connaissant pas At, je préfère ne pas dire de bêtises .

    Si tu lance le cron php a partir d'un autre script php avec exec(), le cron php continuera a tourner. Cela est dû à sa structure :

    1. Il s'agit d'une boucle infini . avec aucune incrémentation.

    2. La fonction ignore_user_abort() correctement paramétrer va continue à faire tourner le script même si l'utilisateur qui l'a lancé a fermé le navigateur (par exemple).

    3. set_time_limit(0) n'impose pas de limite de temps a l'exécution du script.

    Autrement dit tu lance une seule fois le script qui contient exec();
    Normalement, la fonction exec() ne te servira qu'a le lancer.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 27
    Par défaut
    Ah ok, merci Ponzu!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire un trigger after update multiple
    Par java250r dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/08/2012, 17h20
  2. faire un trigger on select
    Par nicolas_lepot dans le forum Développement
    Réponses: 10
    Dernier message: 05/01/2012, 15h57
  3. Comment faire un trigger
    Par momoh dans le forum Signal
    Réponses: 1
    Dernier message: 04/12/2007, 22h28
  4. Réponses: 5
    Dernier message: 15/06/2007, 16h05
  5. plpgsql faire un trigger
    Par etien dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 03/07/2006, 16h45

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