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

PHP & Base de données Discussion :

Gestion d'un fichier txt


Sujet :

PHP & Base de données

  1. #21
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par claude77 Voir le message
    1-)Je script fonctionne très bien sur mes 3 ou 400 mails de mon $_POST['email_bcc'] seul sort en erreur :
    mail invalide : jlfrançois2@free.fr mais je ne vois pas pourquoi ?? peut être le ç ??
    oui c'est la cédille, normalement une adresse mail ne contient ci caractère spécial ou accentué.


    Citation Envoyé par claude77 Voir le message
    au niveau de echo $value la liste emails passe à la ligne a chaque fois qu’une adresse email contient un tiret - et il n’y a pas de virgule entre les différents emails
    mais ils partent bien ???
    L'affichage n'a rien à voir avec le fait que les email soient envoyés ou non. Tu as un retour ligne car c'est interpréter comme une césure mais uniquement pour l'affichage.
    Etant donné que tes mails sont vérifiés avant la création du tableau (dans fichier_1.php) la seule raison pour laquelle ils pourraient ne pas être envoyés en totalité est si ta liste est trop longue et que le temps nécessaire à l'envoi de tous tes mails dépasse le temps d'exécution maximale de tes scripts.

    Citation Envoyé par claude77 Voir le message
    3-)En ce qui concerne l’envoi par paquet peut être une idée idiote, faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'<meta http-equiv="Refresh" content="2;URL=http://cg-aisne.org/temporaire2.php">';
    et une sortie après le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(is_array($tab_mail) && count ($tab_mail) > 0)
    du type
    echo'<meta http-equiv="Refresh" content="2;URL=http://cg-aisne.org">';
    Oui pourquoi pas tu peux tester pour voir. Mais il faudra plus de 2 secondes pour envoyer une liste de 50 mails...

  2. #22
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Points : 62
    Points
    62
    Par défaut
    Bonjour et
    Merci pour tout tes conseils

    ca roule, j'ai fait un essai en mettant dans temporaire1.php
    echo'<meta http-equiv="Refresh" content="2;URL=http://cg-aisne.org/temporaire2.php">';
    qui me redirige automatiquement

    puis sur temporaire2.php après l'envoi des paquets pareil pour recharger la page

    et dans le else pareil mais avec l'adresse de sortie

    tout se passe bien, je reçois bien les mails envoyés par paquets de 2

    donc normalement l'affaire est conclue, je vais mettre çà en place demain sur mon script actuel

    je mettrai demain, la dernière version mise au propre sur le forum , c'est une solution simple qui peut servir

    en tout cas je te remercie pour ta gentillesse et ta disponibilité

    Mes amitiés et bonne soirée

  3. #23
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Le minimum attribué pour les scripts est généralement de trente seconde... Tu pourrais donc faire des plus gros paquets ce qui serait moins pénible pour le serveur.
    Aussi je me demande si la solution du refresh est pérenne. Enfin tu verras bien à l'usage sinon il faudra utiliser un cron.

    Pour la redirection à la fin du premier script, un header serait plus approprié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $_POST['email_bcc'] = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
     
    if (isset($_POST['email_bcc']))
    {
    	$tab_mail = explode(",",$_POST['email_bcc']);
     
            // suite du code...
     
            // redirection vers "temporaire2.php"
            header('Location: temporaire2.php');
    }
    ?>

  4. #24
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Points : 62
    Points
    62
    Par défaut
    Bonjour
    comme promis, ci après les scripts permettant l'envoi de paquets d'emails
    chaque ligne est documentée

    Script1=temporaire1.php

    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
    59
    60
    61
    62
    <?php
    /*Nom du Fichier: temporaire1.php
       il  envoie  une liste d'emails recue par un formulaire dans une variable $POST(email_bcc) nettoyés et en tableau dans un fichier texte temporaire.txt
       ce fichier txt sera traité par temporaire2.php et envoyé par paquet de 50 par exemple
       Les emails non valides sont enregistrés dans le fichier txt temporaire_invalide.txt
       http://www.developpez.net/forums/d1194361/php/php-sgbd/php-mysql/gestion-fichier-txt/#post6555479
    */
     
    	//*********************Connexion à la base de données****************************
     
    	include('../_admin/_connect.php');
     
     
    //************************simulation reception des emails par $_Post********************************
     
    $_POST['email_bcc'] = 'a@laposte.net,b@laposte.net,c@laposte, d@laposte.net ,e@laposte.net,,f@laposte.net, g@laposte.net ,h.laposte.net,i@laposte.net ,
    	j@laposte.net,k@laposte.net,l@laposte.net,m@laposte.net,n@laposte.net,o@laposte.net,p@laposte.net,q@laposte.net,r@laposte.net,s@laposte.net,t@laposte.net,u@laposte.net, v@laposte.net,w@laposte.net,x@laposte.net,y@laposte.net,z@laposte.net';
     
    //********************************Creation Fichier Temporaire**************************************
     
    if (isset($_POST['email_bcc']))
    {
    	$tab_mail = explode(",",$_POST['email_bcc']); // création d'un tableau à partir d'une chaine de caractères en prenant le caractère "," comme délimiteur
     
    	$tab_mail_non_valide = array(); //déclaration d'un tableau vide pour enregistrer les résultas
    	$tab_mail_valide = array(); //déclaration d'un tableau vide pour enregistrer les résultas
     
    	foreach ($tab_mail as $value) // on liste le tableau construit précédemment
    	{
    		$mail = trim($value); // supprime les caractères invisibles non utiles
     
    		if($mail != '') // si la valeur résultante est différente d'une chaine vide
    		{
    			if(filter_var($mail, FILTER_VALIDATE_EMAIL)) // retourne "vrai" (true) si syntaxe mail valide, sinon "faux" (false)
    			{
    				$tab_mail_valide[] = $mail; // enregistre les mails valides dans le tableau $tab_mail_valide
    			}
    			else
    			{
    				$tab_mail_non_valide[] = $mail; // enregistre les mails non valides dans le tableau $tab_mail_non_valide
    			}
    		}
    	}
     
    	file_put_contents('temporaire.txt',serialize($tab_mail_valide)); // enregistre le tableau sérialisé dans le fichier texte 'temporaire.txt'
    	// (car on ne peut pas enregistrer un tableau dans un fichier texte sans le sérialiser)
     
    	if (count($tab_mail_non_valide) > 0)
    	{
    		// liste les mails non valides en les séparant par une virgule et un espace
    		//Ouvre,Ecrit,ferme le fichier TXT en tableau la chaine $tab_mail
    		file_put_contents('temporaire_invalide.txt',serialize($tab_mail_non_valide));
     
    		echo 'mail invalide : '.implode(", ",$tab_mail_non_valide);
    		//print_r($tab_mail_non_valide);
     
    	}
    }
    	// lancement de la page temporaire2.php qui va envoyer les emails par paquet de 50 par exemple
    	echo'<meta http-equiv="Refresh" content="10;URL=http://cg-aisne.org/temporaire2.php">';
     
    ?>
    Script2 =temporaire2.php
    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
     
    <?php
    /*Nom du Fichier: $temporaire2.php
       
    traitement du fichier temporaire.txt crée par temporaire1.php
    Le nbre d'emails par envoi peut etre changé à la ligne
    $paquet_envoi = array_splice($tab_mail, 0,50); ou 50 est le nbre choisi
    */
     
    //*********************Connexion à la base de données****************************
     
    	include('../_admin/_connect.php');
     
    //************************************************************************************
     
    // 1-recuperation et lecture du Tableau temporaire.txt
     
    $tab_mail = @unserialize(file_get_contents('temporaire.txt'));
     
    // 2-Détermine si la variable est un tableau et si le fichier contient des emails
     
    if(is_array($tab_mail) && count ($tab_mail) > 0)
    	{
    	$paquet_envoi = array_splice($tab_mail, 0,50);// Efface et remplace une portion de tableau= 50 emails
     
    	foreach($paquet_envoi as $value) // boucle qui envoie chaque paquet d'email
    	{
    		echo $value;//pour test
     
    	mail($value,$email_exp, $email_objet, $msg, $HEADERS); // envoi des paquets d'emails avec vos variables dont
     
    	}
    	file_put_contents('temporaire.txt',serialize($tab_mail));// on met a jour le fichier temporaire.txt
     
    // on recharge la page toutes les 10 s par exemple pour faire un autre tour jusqu’à épuisement des paquets d'emails
     
    	echo'<meta http-equiv="Refresh" content="10;URL=http://cg-aisne.org/temporaire2.php">';
     
     }
    else
    {
    // si le IF detecte qu'il n'y plus d'email à envoyer on sort
     
    echo'Le fichier ne contient PAS ou PLUS  d\'emails';
     
       header('Location: <a href="http://cg-aisne.org/&#39;);" target="_blank">http://cg-aisne.org/');</a>
    }
     
    ?>

Discussions similaires

  1. gestion d'un fichier txt
    Par b0ub0u dans le forum VB.NET
    Réponses: 5
    Dernier message: 05/05/2012, 16h22
  2. Réponses: 20
    Dernier message: 17/07/2009, 10h17
  3. Problème Gestion Liste et fichiers txt
    Par Freud44 dans le forum Général Java
    Réponses: 2
    Dernier message: 26/08/2008, 21h10
  4. Gestion de fichiers.txt en Transact-SQL
    Par ShaGaTsoin dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 16/09/2007, 21h29
  5. Traitement fichier .txt (gestion des '','')
    Par clemasson dans le forum Access
    Réponses: 1
    Dernier message: 11/12/2006, 15h26

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