Très grosse boucle en php
17 messages
• Page 1 sur 2 • 1, 2
-

dadovb - WRInaute passionné

- Messages: 2050
- Inscription: 22 Nov 2005
Très grosse boucle en php
Bonjour à tous !
J'avais posté hier à propos d'un script de mailing sur 120000 entrées dans ma base, il est tout simple :
Mon script s'arrete à 23583 tours, j'ai le mail() en commentaires, je voulais tester d'abord si mon script bouclait bien sur toutes mes entrées (g bien fait
)
Il me laisse ca comme trace :
Voilà, je comprends pas pourquoi il arrive pas à finir sa boucle surtout qu'au niveau processeur mon serveur se porte bien durant la boucle. Peut-etre avez-vous une idée sur la question ?
J'avais posté hier à propos d'un script de mailing sur 120000 entrées dans ma base, il est tout simple :
- Code: Tout sélectionner
require "./database.php";
$query = "SELECT * FROM mailing";
$result= MYSQL_QUERY($query);
if(mysql_error())
{ print "Erreur dans la base de données : ".mysql_error();
print "<br>Importation stoppée.";
exit();
}
$nb_emails = mysql_num_rows($result);
echo "<br> nb mails envoyés : $nb_emails <br>";
for($i=0;$i<$nb_emails;$i++){
$email = mysql_result($result,$i,'email');
//mail($email,$sujet,$message,$headers);
echo "<br> $i : mail envoyé à $email";
Mon script s'arrete à 23583 tours, j'ai le mail() en commentaires, je voulais tester d'abord si mon script bouclait bien sur toutes mes entrées (g bien fait
Il me laisse ca comme trace :
nb mails envoyés : 128201
0 : mail envoyé à truc@rediffmail.com
1 : mail envoyé à machin@hotmail.com
....
23583 : mail envoyé à chose@yahoo.com
Voilà, je comprends pas pourquoi il arrive pas à finir sa boucle surtout qu'au niveau processeur mon serveur se porte bien durant la boucle. Peut-etre avez-vous une idée sur la question ?
- Zim'
- WRInaute impliqué

- Messages: 804
- Inscription: 27 Avr 2006
dans l'url de ton script, ajoute un p'tit parametre d'url ayant une valeur x
ensuite, tu fais un script qui dis
si !isset valeur x alors x=0
ensuite, tu fait un select de tes mails dans ta base de avec un limit 0,valeur x
tu boucle sur les resultats selectionné avec a chaque fois la fonction mail
puis tu ajoute un meta refresh avant ta boucle = 30 seconde (histoire de dire que ta boucle ai le temps de se finir, et tu fais refresher ta page sur la page courante et le parametre d'url X=X+200 par exemple
Ainsi, tu n'aura plus qu'a lancer ton script, et a aller faire un tour
ensuite, tu fais un script qui dis
si !isset valeur x alors x=0
ensuite, tu fait un select de tes mails dans ta base de avec un limit 0,valeur x
tu boucle sur les resultats selectionné avec a chaque fois la fonction mail
puis tu ajoute un meta refresh avant ta boucle = 30 seconde (histoire de dire que ta boucle ai le temps de se finir, et tu fais refresher ta page sur la page courante et le parametre d'url X=X+200 par exemple
Ainsi, tu n'aura plus qu'a lancer ton script, et a aller faire un tour
- petit-ourson
- WRInaute impliqué

- Messages: 855
- Inscription: 31 Mai 2004
Et ca met combien de temps pour envoyer 120 000 mails ?
- Zim'
- WRInaute impliqué

- Messages: 804
- Inscription: 27 Avr 2006
petit-ourson a écrit:Et ca met combien de temps pour envoyer 120 000 mails ?
par lot de 200 avec un meta refresh à 30 secondes:
cela met (120000/200)*30 secondes
bon c'est long, mais une boucle de 200 enregistrement avec a chaque fois l'envoie d'un mail ça necessite p'tet pas 30 secondes, faut adapter, je ne vais pas lui prendre la main
perso un mailing de 120 000 mail sur un dédié, je penses que ça doit pouvoir se gérer en 1h30 si on ne veux pas trop saturer le serveur
edit: et encore 1h30 c'est super rapide il me semble pour 120 000 mails
Dernière édition par Zim' le Jeu Mai 18, 2006 17:59, édité 1 fois.
- petit-ourson
- WRInaute impliqué

- Messages: 855
- Inscription: 31 Mai 2004
Zim' a écrit:dans l'url de ton script, ajoute un p'tit parametre d'url ayant une valeur x
ensuite, tu fais un script qui dis
si !isset valeur x alors x=0
ensuite, tu fait un select de tes mails dans ta base de avec un limit 0,valeur x
tu boucle sur les resultats selectionné avec a chaque fois la fonction mail
puis tu ajoute un meta refresh avant ta boucle = 30 seconde (histoire de dire que ta boucle ai le temps de se finir, et tu fais refresher ta page sur la page courante et le parametre d'url X=X+200 par exemple
Ainsi, tu n'aura plus qu'a lancer ton script, et a aller faire un tour
Moi je préfère la méthode 'barbare'
Un select unique qui alimente un tableau et après le mail est envoyé en bouclant sur le tableau plutot que sur la requête.
Le truc super important en fait, c'est de ne pas faire un echo à chaque boucle, c'est cela qui bouffe du tps ;o)
-

STFprod - WRInaute impliqué

- Messages: 627
- Inscription: 14 Jan 2004
oui ca marchera, s'il n'y a pas de souci.
le probleme de ta solution étant que s'il y a un plantage a un endroit, on ne sait pas où... (coupure de courant ou plantage ou time limit exceeded, ...)
il faut toujours stocker quels emails ont été envoyés, et lesquels n'ont pas fonctionné.
le probleme de ta solution étant que s'il y a un plantage a un endroit, on ne sait pas où... (coupure de courant ou plantage ou time limit exceeded, ...)
il faut toujours stocker quels emails ont été envoyés, et lesquels n'ont pas fonctionné.
- petit-ourson
- WRInaute impliqué

- Messages: 855
- Inscription: 31 Mai 2004
Zim' a écrit:petit-ourson a écrit:Et ca met combien de temps pour envoyer 120 000 mails ?
perso un mailing de 120 000 mail sur un dédié, je penses que ça doit pouvoir se gérer en 1h30 si on ne veux pas trop saturer le serveur
edit: et encore 1h30 c'est super rapide il me semble pour 120 000 mails
Pouaa c'est une chèvre mon serveur, il a mis 3h30 hier pour m'envoyer mes 15 000 mails.
Le script a mis 12 mins (requête + envoi via mail()) et qmail a mis 3h15 a tout digérer. Va falloir qu'il embauche un admin réseau dans cette boite lol
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
petit-ourson a écrit:Pouaa c'est une chèvre mon serveur, il a mis 3h30 hier pour m'envoyer mes 15 000 mails.
Le script a mis 12 mins (requête + envoi via mail()) et qmail a mis 3h15 a tout digérer. Va falloir qu'il embauche un admin réseau dans cette boite lol
Oui, enfin il faut surtout faire des scripts qui tiennent la route et ne pas s'improviser programmeur !
17 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Très grosse augmentation de l'indexation ?
- Effet sandbox après très grosse mise à jour.
- Script PHP très très simple (mot de pass + login)
- Boucle PHP et variables
- Boucle(pas=5)en php??
- Boucle avec php
- [Php] Problème de boucle
- boucle d'image en php
- Formulaire HTML et PHP Boucle foreach
- PHP array dans une boucle while
- Suivre le Tour de France 2008 avec Google Street View - 03-07-2008
- Gérer ses paramètres de tracking dans Google Webmaster Tools - 16-09-2009
- Articles de R et D sur le PageRank, le SpamRank et le spam... - 09-12-2005
- Lancement confirmé de MSN Search - 20-01-2005
- MSN HRS : des éditeurs de MSN évaluent la qualité des sites web - 02-12-2005
- Articles sur le référencement publiés par des chercheurs - 16-02-2006
- Des détails sur Gmail, le webmail de Google - 15-04-2004
- Parts de marché des moteurs aux USA en juillet 2008 (comScore) - 22-08-2008
Consultez la description détaillée des produits ou services de Google suivants : Google Blog Search
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

