Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-02-2018 00:49:15

yassinho2015
Nouveau membre
Date d'inscription: 19-04-2014
Messages: 9

Execution d'une fonction après un lapse de temps

Bonjour,
Je travaille sous le Framework Zend 1 et j’aimerais exécuter une fonction d'envoie de mail 30 minutes après avoir effectué un ajout dans une base de données mysql .
NB: je dois envoyer le mail 30 minutes après l'ajout des données pour la simple raison que l'utilisateur dispose de 30 min pour effectuer des modifications sur les données insérés via un formulaire dans la base de données et qui vont être transmises par la suite par mail (fonction de mail)

Merci d'avance.

Hors ligne

 

#2 07-02-2018 09:04:57

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

Re: Execution d'une fonction après un lapse de temps

Bonjour,

Quel est ton soucis dans ce contexte ? Je ne vois pas trop de problème.


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

Hors ligne

 

#3 07-02-2018 10:06:33

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 613
Site web

Re: Execution d'une fonction après un lapse de temps

Il faut simplement utiliser un cron qui s'execute toutes les 30 minutes et envoi les mails pour les lignes pour lesquelles ça n'a pas été fait.

Tu trouveras des tonnes de docs sur l'utilisation de ZF1 dans des cron en ligne.

Hors ligne

 

#4 08-02-2018 09:47:28

yassinho2015
Nouveau membre
Date d'inscription: 19-04-2014
Messages: 9

Re: Execution d'une fonction après un lapse de temps

Tout d'abord je vous remercie pour vos réponse . je viens de trouver des pistes vers ce que je veux réaliser en se basant sur le concept cronjob Zend:
selon les recherches effectués je dois réaliser un script par exemple 'BootstrapCron.php' de la sorte afin d'appeler les ressources necessaires pour les echanges avec la base de données et les autres librairies:

Code:

[lang=php]
<?php
mb_internal_encoding('utf-8');
mb_regex_encoding('utf-8');
setlocale(LC_ALL, 'fr_FR.utf8');

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/..'));

// Define path to library directory
defined('LIBRARY_PATH')
    || define('LIBRARY_PATH', realpath(dirname(__FILE__) . '/../../library'));

// Define path to public directory
defined('PUBLIC_PATH')
    || define('PUBLIC_PATH', realpath(dirname(__FILE__) . '/../../public'));

define('APPLICATION_ENV','development');

// Ensure library is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(LIBRARY_PATH),
    realpath(APPLICATION_PATH),
    realpath(APPLICATION_PATH . '/models'),
    get_include_path(),
)));

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
// custom classes
$autoloader->registerNamespace('Util_');

require_once 'Zend/Application.php';
$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
$application->bootstrap();

$view = new Zend_View();
$view->setScriptPath(APPLICATION_PATH . '/views/scripts/');
?>
ensuite il faut créer un fichier qui va faire appel au précédent et c'est dans le 2ème fichier que je dois effectuer l'ensomble des traitements:
<?php
require_once 'BootstrapCron.php';

$tableUser = new Table_User();
$view->user = $tableUser->get(1);
$content = $view->render('user/profile.phtml');
.....
?>

Ma question c'est est ce que je suis dans la bonne voie? et où est ce que je doit placer les 2 fichiers ;est ce sur la répertoire /application ?

Dernière modification par yassinho2015 (08-02-2018 09:47:57)

Hors ligne

 

#5 08-02-2018 23:03:34

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 613
Site web

Re: Execution d'une fonction après un lapse de temps

Tu es sur la bonne piste : le premier fichier est ton bootstrap, le second est ton cron à proprement parler.

Ton archi en terme de fichiers ressemble à ça :

/application
  |- /controllers
  |- /models
  |- /commands
  |- /whatever..
  |- /Bootstrap.php
/cron
  |- /bootstrap.php (BootstrapCron.php dans ton cas)
  |- /scripts
        |- /my-first-cron.php
        |- /my-second-cron.php
        |- /my-third-cron.php
/public


Basé là dessus, ton BootstrapCron devient juste bootstrap.php chez moi (pas de majuscule, c'est du plain php comme index.php, pas une classe.
Les my-first-cron.php et autres sont les scripts. On les appelles avec cron ou en command line avec la commande suivante :

Code:

php cron/scripts/my-first-cron.php

Dans le code, tu inclus comme montré plus haut le bootstrap (car on fait un appel direct)

Code:

require __DIR__.'/../bootstrap.php';

Puis ton code. Drop le ?> de la fin, il vaut mieux jamais le mettre d'ailleurs

Hors ligne

 

#6 09-02-2018 00:34:52

yassinho2015
Nouveau membre
Date d'inscription: 19-04-2014
Messages: 9

Re: Execution d'une fonction après un lapse de temps

Votre explication était bien détaillée.Merci pour votre aide.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages