Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/07/2011, 15h38   #1
Membre à l'essai
 
Étudiant
Inscription : avril 2007
Messages : 84
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 84
Points : 20
Points : 20
Envoyer un message via MSN à honey0 Envoyer un message via Yahoo à honey0
Par défaut créer et lancer un batch d'envoi de mail avec Zend

Bonjour.
je suis désolée si le sujet n'est pas au bon endroit.

je travaille sur une application et je dois envoyer un mail tous les soirs à une certaine heure. J'ai fait la fonction d'envoi de mail avec Zend_Mail qui envoie dès qu'il y a un changement. Mais ce que je veux faire, c'est garder tous les changements en mémoire, et envoyer en une seule fois, à la fin de la journée.
Je débute avec zend, et je n'ai jamais fait de script batch, d'où mes interrogations:
1- le script va-t-il contenir le code d'envoi de mail zend que j'ai déjà fait?
2- à quel niveau de l'architecture doit se situer le fichier?
3- comment lancer le fichier: depuis la vue zend ?
honey0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 16h27   #2
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Citation:
1- le script va-t-il contenir le code d'envoi de mail zend que j'ai déjà fait?
Non, le batch ne va pas qu'aller appeler l'URL correspondant à l'endroit où est hébergé ton script à certains intervals de temps (via un cron).
Citation:
2- à quel niveau de l'architecture doit se situer le fichier?
Où tu veux.
Citation:
3- comment lancer le fichier: depuis la vue zend ?
Via le batch, qui est lui même lancé par le cron.

En gros tu auras sur ton serveur un script qui va aller exécuter le batch à une heure précise, dans ce batch tu executes ton script php via la commande php.
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/07/2011, 17h39   #3
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
1- Le mieux est de ne pas passer par une URL
2- 3- ni être placé dans le directory web (habituallement httpdoc, www, etc...) mais dans un dossier parent et autre, néanmoins géré par PHP (et Apache)
De cette manière, personne ne pourra lancer le script à moins d'avoir la main sur PHP dans le serveur.

1- Le script doit pouvoir être exécutable en mode CLI (avec tout ce qui va avec (gestion des arguments passés s'il y en a, gestion des includes des classes, etc.)

3- Donc, surtout pas dans une vue, joignable par URL. Le CRON devrait être lancé depuis le serveur et par le serveur uniquement.
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/07/2011, 09h01   #4
Membre à l'essai
 
Étudiant
Inscription : avril 2007
Messages : 84
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 84
Points : 20
Points : 20
Envoyer un message via MSN à honey0 Envoyer un message via Yahoo à honey0
Bonjour,
merci pour vos explications.
D'après ce que vous m'avez dit, voilà comment je prévois de procéder:
placer le script et le batch dans le répertoire bin
le fichier php qui va envoyer les mails sera placé dans controllers

Je vais faire cela, et je vous tiendrai au courant.

Bon début de semaine à tous!
honey0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 11h27   #5
Membre à l'essai
 
Étudiant
Inscription : avril 2007
Messages : 84
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 84
Points : 20
Points : 20
Envoyer un message via MSN à honey0 Envoyer un message via Yahoo à honey0
rebonjour,

j'ai fait mon batch et le fichier php. j'essaie de tester en double-cliquant sur le batch, mais toujours pas de mail reçu.

mail.bat
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
@echo off
set APPLICATION_ENV=ptdevelopment
set APPLICATION_MODULE=batch
set TRACES=c:\temp
set p0="%~dp0..\contexts\batch.php"
set p1="00"
set p2="01"
set p3="Business_EnvoiMails"
set p4="mailer"
set p5="OK"
php %p0% %p1% %p2% %p3% %p4% %p5%


Et le fichier EnvoiMails.php, qui se trouve dans models (non pas dans controllers):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
<?php
 
    class EnvoiMails
    {
            public function __construct()
            {
 
            }
 
 
            public function mailer()
            {
                $fonction = new Business_NPD();
 
                $result = $fonction->getMailsNotificationsJour();
 
                //définition du serveur SMTP qui sera utilisé
                $mailTransport = new Zend_Mail_Transport_Smtp(****);
                Zend_Mail::setDefaultTransport($mailTransport);
 
                $mail = new Zend_Mail();
                $mail->setType(Zend_Mime::MULTIPART_RELATED);
                $mail->setFrom('', '');
 
               foreach ($result as $r)
               {
                   $message = "Test d'envoi de mails par scripts automatiques";
 
                    $message = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $message);
                    $mail->setBodyHtml($message);
                    $mail->addTo($r['adresse'], ''); 
                    $mail->send();
               }
 
            }
    }
 
?>
Je ne sais pas d'où vient l'erreur, ça fait 1h que je me creuse la tête.
honey0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h04   #6
Membre à l'essai
 
Étudiant
Inscription : avril 2007
Messages : 84
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 84
Points : 20
Points : 20
Envoyer un message via MSN à honey0 Envoyer un message via Yahoo à honey0
Bonjour,

personne.

Il m'affiche l'erreur suivante:

Citation:
Zend_Mail_Protocol_Exception: aucune connexion n'a été établie car l'ordinateur cible l'a expressément refusée.
honey0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 10h00   #7
Membre à l'essai
 
Étudiant
Inscription : avril 2007
Messages : 84
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 84
Points : 20
Points : 20
Envoyer un message via MSN à honey0 Envoyer un message via Yahoo à honey0
Salut!!

après maintes tentatives, j'ai fait appel à un webservice pour envoyer les mails. C'est dommage, car j'aurai voulu savoir où était mon erreur; mais l'essentiel est que je puisse faire ce que je voulais au départ...

Merci à tous
honey0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 10h00   #8
Membre à l'essai
 
Étudiant
Inscription : avril 2007
Messages : 84
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 84
Points : 20
Points : 20
Envoyer un message via MSN à honey0 Envoyer un message via Yahoo à honey0
Salut!!

après maintes tentatives, j'ai fait appel à un webservice pour envoyer les mails. C'est dommage, car j'aurai voulu savoir où était mon erreur; mais l'essentiel est que je puisse faire ce qu eje voulais au départ...

Merci à tous
honey0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2011, 17h00   #9
Membre régulier
 
Avatar de Alcide_
 
Homme
Étudiant
Inscription : juin 2008
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 70
Points : 78
Points : 78
je me rappel avoir déjà fait un truc de ce genre...
Si tu as la main sur le serveur et si c'est une distrib linux, tu peux gérer un cron qui te lancerait un script php (autonome) tout les jours (pas besoin de script batch). Avec le gestionnaire de tâche Windows je ne sais pas si c'est possible...
Après, il ne faut pas oublier les inclusions qui vont bien car tu n'accèdes plus à ton index.php et son "set_include_path()".

Et si tu veux pouvoir l'utiliser en web service il te suffira de faire une action du style :
Code :
1
2
3
4
$this->_helper->viewRenderer->setNoRender();
ob_start();
require_once  '/path/to/cronjob.php';
ob_end_clean();
Alcide_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h42.


 
 
 
 
Partenaires

Hébergement Web