Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony 4]créer une tâche cron

    15 juin 2019 à 17:32:44

    Bonjour à tous,

    Actuellement je développe en symfony 4,

    on m'a dit crée une tâche : envoyer un mail à une personne à 9h tous les matins.

    Il me parait qu'il faut utiliser le composant cron,

    je l'ai installé avec la commande  : composer require cron/cron-bundle

    Mais je ne vois pas trop comment créer la fonction en utilisant cron.

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      15 juin 2019 à 18:02:09

      Bonjour. Je doute fort que tu puisses lancer une tâche cron avec symfony. Tu peux le faire depuis l'interface d'administration de ton hébergeur (et cela ne fonctionne que sous Linux).
      • Partager sur Facebook
      • Partager sur Twitter
        15 juin 2019 à 18:39:47

        Domi65 a écrit:

        Bonjour. Je doute fort que tu puisses lancer une tâche cron avec symfony. Tu peux le faire depuis l'interface d'administration de ton hébergeur (et cela ne fonctionne que sous Linux).


        Bonjour,

        les tâches cron sont pas faisables en symfony?

        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2019 à 5:16:03

          Bonjour,

          Explique plus clairement ce que tu veux faire et on pourra te donner une orientation.

          C'est toujours la même personne à qui tu veux envoyer un mail à 9h, avec quel texte,.....??

          A toi

          • Partager sur Facebook
          • Partager sur Twitter
            16 juin 2019 à 6:22:05

            CarréDas1 a écrit:

            Bonjour,

            Explique plus clairement ce que tu veux faire et on pourra te donner une orientation.

            C'est toujours la même personne à qui tu veux envoyer un mail à 9h, avec quel texte,.....??

            A toi

            Bonjour,

            en fait on a une table user en bdd, qui stocke des gens avec leur mail,  

            tous les matins, le serveur doit leur envoyer un mail à 9h, le texte est en dur, genre "bonjour monsieur, blabla". 

            On m'a dit de créer une tâche cron pour que le serveur puisse faire ca automatiquement et répetitivement tous les jours.

            Jai téléchargé le composant cron dans mon projet en symfony 4, puis je ne sais plus quoi faire.

            • Partager sur Facebook
            • Partager sur Twitter
              16 juin 2019 à 6:42:21

              bonjour, tu peux regarder du coter des commandes sur symfony pour effectuer ce que tu souhaite. 

              tu ecris ta logique en php (recuperer la liste des membres, creer un email etc...) et tu automatise l'execution de la commande a l'aide d'un cron.

              https://symfony.com/doc/current/console.html

              • Partager sur Facebook
              • Partager sur Twitter
                16 juin 2019 à 7:05:39

                yannis51 a écrit:

                bonjour, tu peux regarder du coter des commandes sur symfony pour effectuer ce que tu souhaite. 

                tu ecris ta logique en php (recuperer la liste des membres, creer un email etc...) et tu automatise l'execution de la commande a l'aide d'un cron.

                https://symfony.com/doc/current/console.html

                Bonjour 

                merci de ton aide. 

                Jai une question qui paraît peut-être un peu bête, 

                une fois que j'écris ma fonction et je  la lance sur le serveur avec la commande indiquée, est que j'ai plus rien à faire?

                ou je dois refaire la commande tous les jours ?

                merci d'avance 

                • Partager sur Facebook
                • Partager sur Twitter
                  16 juin 2019 à 7:10:28

                  bonjour herosgogo, je t'invite a lire la definition d'un cron : 

                  https://fr.wikipedia.org/wiki/Cron

                  cela devrait repondre a ta question.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 juin 2019 à 7:22:50

                    yannis51 a écrit:

                    bonjour herosgogo, je t'invite a lire la definition d'un cron : 

                    https://fr.wikipedia.org/wiki/Cron

                    cela devrait repondre a ta question.


                    Merci de ton aide.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 juin 2019 à 9:49:20

                      Bonjour,

                      Pour info je fais exactement ce genre de traitement pour rappeler aux utilisateurs leur rdv de la journée par mail.

                      - le principe :

                      * utiliser le daemon cron sous Linux (si windows cela doit aussi pourvoir se faire) ... il y a plein de tutos sur le sujet.

                      * une commande (console) Symfony qui fait le traitement ad-hoc.

                      C'est le cron qui lance la commande la commande Symfony.

                      Je n'utilise pas de bundle spécifique : le cron bundle me semble une surcouche dont je ne vois pas bien l'intérêt par rapport à quelques commandes Linux simples mais peut-être n'ai je pas compris son but.

                      A+ 

                      -
                      Edité par monkey3d 16 juin 2019 à 9:53:35

                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 juin 2019 à 16:32:03

                        Rebonjour à tous:

                        Ma command(classe) est créée dans src\Command\JobAlertCommand:

                        <?php
                        
                        namespace App\Command;
                        
                        use App\Services\SendEmail;
                        use Doctrine\ORM\EntityManagerInterface;
                        use Symfony\Component\Console\Command\Command;
                        use Symfony\Component\Console\Input\InputInterface;
                        use Symfony\Component\Console\Output\OutputInterface;
                        
                        class JobAlertCommand extends Command
                        {
                            // the name of the command (the part after "bin/console")
                            protected static $defaultName = 'app:JobAlertSendEmail';
                            private $em;
                            private $sendMail;
                        
                            public function __construct(EntityManagerInterface $em,SendEmail $sendEmail)
                            {
                                $this->em = $em;
                                $this->sendMail = $sendEmail;
                            }
                        
                            protected function configure(){
                            }
                        
                            protected function execute(InputInterface $input, OutputInterface $output)
                            {
                                $this->sendMail->valideStructureMail("xxxxxx@hotmail.com","testCommandSymfony","testCommandSymfony");
                            }
                        }
                        
                        
                        
                        

                        Dans services.yaml:

                        App\Command\JobAlertCommand:
                                tags:
                                    - { name: 'console.command',command: 'app:JobAlertSendEmail'}

                        Quand je lance la commande dans mon projet sur le terminal:

                        php bin/console app:JobAlertSendEmail


                        j'ai eu des erreurs:

                        Fatal error: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "JobAlertCommand" from namespace "App\Command".
                        Did you forget a "use" statement for another namespace? in /Users/zhen/Documents/Symfony/projetjob/var/cache/dev/ContainerZ6O0AM4/getJobAlertCommandService.php:9
                        Stack trace:
                        #0 /Users/zhen/Documents/Symfony/projetjob/var/cache/dev/ContainerZ6O0AM4/srcApp_KernelDevDebugContainer.php(451): require()
                        #1 /Users/zhen/Documents/Symfony/projetjob/vendor/symfony/dependency-injection/Container.php(433): ContainerZ6O0AM4\srcApp_KernelDevDebugContainer->load('getJobAlertComm...')
                        #2 /Users/zhen/Documents/Symfony/projetjob/vendor/symfony/dependency-injection/Argument/ServiceLocator.php(38): Symfony\Component\DependencyInjection\Container->getService('privates', 'App\\Command\\Job...', 'getJobAlertComm...', true)
                        #3 /Users/zhen/Documents/Symfony/projetjob/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php(37): Symfony\Component\DependencyInjection\Argument\ServiceLocator->get( in /Users/zhen/Documents/Symfony/projetjob/var/cache/dev/ContainerZ6O0AM4/getJobAlertCommandService.php on line 9


                        Quelqu'un peut m'expliquer cet use que j'ai oublié?

                        merci d'avance.


                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 juin 2019 à 19:10:29

                          1) ta commande en l'état n'est pas un service donc il n'y a pas lieu de déclarer dans services.yaml.

                          2) le fichier JobAlertCommand.php est dans quel répertoire ? dans App/Command ou dans App/Command/JobAlertCommand ?

                          A+

                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 juin 2019 à 10:48:04

                            monkey3d a écrit:

                            1) ta commande en l'état n'est pas un service donc il n'y a pas lieu de déclarer dans services.yaml.

                            2) le fichier JobAlertCommand.php est dans quel répertoire ? dans App/Command ou dans App/Command/JobAlertCommand ?

                            A+


                            Bonjour

                            merci de ton conseille.

                            Et mon fichier JobAlertCommand.php  se trouve dans src/Commande.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 juin 2019 à 12:47:36

                              bonjour,

                              supprime le contenu de var/cache:

                              rm -rf var/cache/*



                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 juin 2019 à 12:58:00

                                Dans src/Commande avec un e à la fin ? cf ci-dessus

                                Car tu indiques pour namespace : 

                                namespace App\Command;


                                A+

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  25 juin 2019 à 8:57:37

                                  monkey3d a écrit:

                                  Dans src/Commande avec un e à la fin ? cf ci-dessus

                                  Car tu indiques pour namespace : 

                                  namespace App\Command;


                                  A+


                                  Bonjour,

                                  non, y a pas de e, c'est une faute d'orthographe que j'ai commise en répondant sur le forum. Dans le projet c'est App\Command;

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  [Symfony 4]créer une tâche cron

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown