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. 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).
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.
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");
}
}
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é?
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;
[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.
Site les mathématiques amusantes pour vous détendre