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

Autres composants PHP Discussion :

Problème envoi Mail -> Fatal error: Allowed memory size of 8388608 bytes exhausted


Sujet :

Autres composants PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 21
    Points
    21
    Par défaut Problème envoi Mail -> Fatal error: Allowed memory size of 8388608 bytes exhausted
    Bonjour à tous,

    Voila je suis en train de développer un systeme de newsletter.
    Pour cela j'utilise les classes de Zend.
    Ce matin j'ai fais un test sur une db de 7000 mails. Mon souci c'est qu'à partir de 400 mails j'ai un erreur du style Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 156 bytes) in /Zend/Mail/Protocol/Abstract.php

    Voici une parti de mon code :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    	require_once 'Zend/Mail.php';
    	require_once 'Zend/Mail/Transport/Smtp.php';
    	$config = array(
    					'username' => $result['smtp_user'],
    					'password' => $result['smtp_pass']);
     
    	$tr = new Zend_Mail_Transport_Smtp('localhost', $config);
    	Zend_Mail::setDefaultTransport($tr);
     
     
    	foreach ( $aEmail as $key => $email)  {
     
                          // redaction du message
     
    			if (EmailOK($email['abo_email'])) {
     
    				$mail = new Zend_Mail ();
    				$mail->setFrom ($result['sender_email'], $result['sender_name']);
    				$mail->addTo ($email['abo_email']);
    				$mail->setSubject ($result['sujet']);
    				$mail->setBodyHtml ($message);
    				if($mail->send ()) {
    					$var = 'ok -> envoi : '.$email['abo_email'].' ';
    					$time = date("H:i:s");					
    					$ligne = $var.";".date("d/m/Y")." ".date("H:i:s")."\n";  
    					$fp = fopen ("log/log_envoi.txt", "a+"); 
    					/* écriture de la ligne ŕ concurrence de 1024 caractčres */
    					fwrite($fp, $ligne, 1024);
    					/* fermeture du fichier */
    					fclose($fp);
     
    					unset($mail); 	
     
    				}
    				else {
    					$var = 'error -> envoi : '.$email['abo_email'].' '; 
    					$time = date("H:i:s");
    					$ligne = $var.";".date("d/m/Y")." ".date("H:i:s")."\n";  
    					/* écriture de la ligne ŕ concurrence de 1024 caractčres */
    					$fp = fopen ("log/log_envoi.txt", "a+"); 
    					fwrite($fp, $ligne, 1024);
    					/* fermeture du fichier */
    					fclose($fp); 	
    				}
    			}
    			else {
     
    				$var = 'invalide email -> '.$email['abo_email'].' '; 
    				$time = date("H:i:s");
    				$ligne = $var.";".date("d/m/Y")." ".date("H:i:s")."\n";  
    				/* écriture de la ligne ŕ concurrence de 1024 caractčres */
    				$fp = fopen ("log/log_envoi.txt", "a+"); 
    				fwrite($fp, $ligne, 1024);
    				/* fermeture du fichier */
    				fclose($fp); 
    			}
     
    	}
    Si quelqu'un voit pourquoi ce script bouffe trop de mémoire ?
    Sachant que j'ai déjà testé en modifiant le memory limit avec 160M mais meme avec cette limit le script arrive à plus de 160M, ce qui génant car ça bouffe pas mal de bande passante.

    Il y a t il moyen de libérer de l'espace mémoire lors de l'exécution du script ??

    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 103
    Points : 67
    Points
    67
    Par défaut
    Hello

    tu as tourvé une solution à ton pb ?
    Je suis bloqué au même niveau que toi dès que ma boucle sur ma base de mails commence à avoisiner les 300/400 mails...

    Merci d'avance

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Il faut temporiser l'envoi, sans quoi tu vas faire tomber le serveur de mails. Essaie de faire des envois par 200 mails par exemple : charge le script (qui envoie 200 mails), fais une pause (Meta/Refresh en HTML par exemple) puis relance le script, etc.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 103
    Points : 67
    Points
    67
    Par défaut
    ok merci pour le conseil
    je vais tester !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/11/2010, 18h49
  2. Réponses: 3
    Dernier message: 08/12/2009, 14h14
  3. Réponses: 1
    Dernier message: 03/10/2009, 11h36
  4. [PEAR][Mail] Fatal Error : Allowed memory size of 8388608 bytes exhausted
    Par bigben89 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 20/10/2008, 18h01
  5. [Librairies] zip.lib.php Fatal error: Allowed memory size of 8388608 bytes exhausted
    Par manaboko dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 22/05/2006, 10h42

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