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 :

Optimisation script PHP et Mysql [MySQL]


Sujet :

PHP & Base de données

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Optimisation script PHP et Mysql
    Bonjour,
    Désolé si je ne suis pas dans le bon forum, mais cela concerne aussi bien php que Mysql.
    Mon pb est le suivant : j'ai un script qui va chercher dans ma db des adresses mails. Ensuite via le webservice de mon routeur de mail de masse, je récupère le statut du mail en question (spam, adresse inexistante, ...) et met à jour cette valeur dans ma db.
    J'ai remarqué que pour environ 1500 adresses mails, le temps d'exécution était bien trop long pour si peux d'adresse et que dernièrement je suis même tombé en time out (erreur 504).
    Voici mon script et dite moi comment l'optimiser.
    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
    //--- recherche des groupes de contacts ayant envoyé une campagne a J-1
    $sql = 'SELECT newsletter.id_groupe, newsletter_groupe.libelle, newsletter_client.societe 
    	FROM newsletter 
    	LEFT JOIN newsletter_groupe ON newsletter_groupe.id_groupe = newsletter.id_groupe 
    	LEFT JOIN newsletter_client ON newsletter_client.id_client = newsletter.id_client 
    	WHERE TO_DAYS(NOW()) - TO_DAYS(newsletter.post_date) <= 1 
    	GROUP BY newsletter.id_groupe' ; 
     
    $query = mysql_query($sql) or die (mysql_error());
    $nbgroupe = mysql_num_rows($query);
     
    if($nbgroupe >= 1)
    {
    	//--- boucle sur les groupes retournés
    	while ($groupe = mysql_fetch_assoc($query))
    	{
    		$i = 0;
    		//--- recherche des abonnés
    		$sqlabo = 'SELECT newsletter_abonne.id_abonne, newsletter_abonne.cle, newsletter_abonne.mail, newsletter_abonne.etat 
    			FROM newsletter_abonne 
    			WHERE newsletter_abonne.id_groupe = ' . $groupe['id_groupe'] . ' ' ;
    		$queryabo = mysql_query($sqlabo) or die (mysql_error());
    		//--- boucle sur les abonnées du groupe
    		while ($abo = mysql_fetch_assoc($queryabo))
    		{
    			$i++;
    			$statut = Newsletter::MJStatutMailAbo($abo['mail']);
    			if($statut['unsub'] == 1) { $etat = 2 ; }
    			elseif($statut['bounce'] >= 1 && $statut['blocked'] == 0 && $statut['spam'] == 0 && $statut['unsub'] == 0) { $etat = 3 ; }
    			elseif($statut['blocked'] >= 1) { $etat = 4 ; }
    			elseif($statut['spam'] >= 1) { $etat = 5 ; }
     
    			//--- pour réduire le nb de requête la MAJ se fait uniquement si l'état est différent de la valeur en DB.
    			if($etat != $abo['etat'])
    			{
    				//--- Met à jour l'état d'un destinataire
    				$sql = 'UPDATE newsletter_abonne
    					SET newsletter_abonne.etat = '.$etat.', newsletter_abonne.derniere_modification = Now() 
    					WHERE newsletter_abonne.mail = \'' . $abo['mail'] . '\' 
    					AND newsletter_abonne.id_groupe = ' . $groupe['id_groupe'] . '' ;
    				$Result = mysql_query($sql) or die(mysql_error()) ;
    			}
    		}
    		$html.='Mise à jour de ' . $i . ' statut'.($i >=2 ? 's' : '').' d\'abonné pour le groupe "' . stripslashes($groupe['libelle']) . '" du client ' . stripslashes($groupe['societe']) . '<br />' ;
    	}
    	return $html;
    }
    D'avance merci pour vos retours
    Dernière modification par Bovino ; 20/06/2013 à 08h29. Motif: Réduction de l'indentation : merci pour ceux qui lisent...

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

Discussions similaires

  1. [SQL-Server] Optimisation Script PHP
    Par JmL40 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 06/05/2014, 18h40
  2. [PostgreSQL] Convertion de Script PHP utilisant Mysql vers Postgresql
    Par Boy_From_HelL dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/08/2013, 01h52
  3. [PHP 5.4] Optimisation script php
    Par Mardewin dans le forum Langage
    Réponses: 6
    Dernier message: 10/05/2013, 11h35
  4. adapter un script php avec mysql pour firebird
    Par omar24 dans le forum Firebird
    Réponses: 1
    Dernier message: 04/03/2011, 13h48
  5. [MySQL] Exécuter un script PHP depuis MySQL
    Par phicarre dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/08/2009, 23h36

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