Temps d'execution de script limité

[Résolu]
Signaler
Messages postés
261
Date d'inscription
mardi 2 juillet 2002
Statut
Membre
Dernière intervention
10 mars 2014
-
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
-
Bijour à tous!

Voila j'ai fait un forum et je veux que quand il y a un nouveau sujet, tous les membres contenu dans ma table recoivent un mail de notification.
J'ai fait mon script comme cela, mais sachant qu'au bout de 10 ou 20 secondes le serveur va me le bloquer, y aurait-il un autre moyen de faire?
Juste pour être sûr que tous mes membres recoivent le mail qu'ils ont droit..

$reponse = mysql_query("SELECT mail FROM MaTable");

mysql_close();
while ($donnees = mysql_fetch_array($reponse) )

{
$mail = $donnees['mail'];
// Vérification de la présence du @ dans $mail
if (ereg(".+(@.+)(.[[:alpha:]]{2}([[:alpha:]]?))$",$mail)){
$From  = "From:notification@vccg.ch\n";
$From .= "MIME-version: 1.0\n";
$From .= "Content-type: text/html; charset= iso-8859-1\n";
mail($mail,$sujetmail,$Message,$From);
} 
}


Merci d'avance pour vos lumières

8 réponses

Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
8
Bonjour,

CRON permet l'execution temporisée de scripts; si tu à libre main sur ton systeme tu pourrais appeler un script toutes les minutes par exemple.

Sinon google-groups était juste un moyen. La plupart des hébergements (à partir de la moyenne gamme) disposent d'une liste de diffusion. Les adresses resteraient donc dans ta main.

Cordialement,
- Pysco68
Messages postés
2380
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Si vraiment tu ne peux pas toucher au temps d'exécution (ini_set ou php.ini inaccessible), tu peux faire de la façon suivante:
- Créer une table temporaire qui accueillera tes futures adresses
- Copie dans cette table, les adresses concernées
- Boucler sur cette table pour envoyer tes mails
- Dés q'un mail est envoyé tu efface cette adresse de cette table
- Si une erreur se produit, tu relances ta commande d'envoi de mail..
- Bonus: Tu estimes le temps d'exécution après chaque envoi de mail et dès que tu t'approches du temps max tu quittes ta boucle (ça évite l'erreur)
- Bonus2: si tu as accès au serveur (crontab sous Linux)
- Bonus3: Tu as fini de faire ça.. tu peux aller faire une sieste et te reposer..
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
8
Solution "bête"; utilise une mailing-list (type majordomo ou encore google-groups). Il te suffira d'envoyer un mail depuis ton serveur à cette liste de diffusion.

Je crois que c'est le plus simple. En plus, tes abonnés pourront controller s'il veulent le mail de notification ou pas ;)

Cordialement,
- Pysco68
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
8
@syndrael:
avec le nombre de requêtes que tu a à faire (potentiellement 2 + "nombre adresses mail") tu ne fais que ralentir la chose. Plus simple; prendre des petit paquets (50-100 mails) et les envoyer sans grandes vérifications du temps d'exec.

Pour la suite; merci CRON et une entrée dans la bdd qui te dis ou tu t'est arrêté (au final 2 requêtes) ;)


- Pysco68
Messages postés
2380
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Oui, c'est une alternative.. J'ai mis la mienne en place sur pas mal de sites à forte fréquentation (impact négligeable sur les serveurs) et ça marche.. Passer par Google pour un site pro c'est moyen, et Google pour les clients, ce n'est pas trop apprécié.
Tout dépend du contexte.. J'ai donné une solution, il y en a des tas d'autres. Mailliam choisira celle qui convient à son besoin.
S.
Messages postés
261
Date d'inscription
mardi 2 juillet 2002
Statut
Membre
Dernière intervention
10 mars 2014
3
ReTchô!

Merci à vous 2 pour vos réponses

Syndrael ton idée me plaît bien, mettre les mails dans une table, les effacer au fur et à mesure de l'envoi, en comptant le temps et arrêtant le script avant les 10 sec tout simplement..

Car c'est vrai que faire appel à google-groups c'est pas con non plus, mais ca fait moins pro
Sinon qu'entendais tu par CRON Pysco68? On le trouve sur les serveurs et on peut paramétrer l'envoi de mails avec ce programme? tu sais comment?

Je vais creuser cette voie aussi, merci bien en tout k
Messages postés
261
Date d'inscription
mardi 2 juillet 2002
Statut
Membre
Dernière intervention
10 mars 2014
3
ahah ouais tout bêtement! j'ai pas pensé à la probabilité que mon hébergeur puisse fournir une liste de diffusion et c'est le cas!!

ahah j't'adore toi!! ca va être tellement + simple!

Merci !!
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
8
De rien ;)

- Pysco68