mailliam
Messages postés261Date d'inscriptionmardi 2 juillet 2002StatutMembreDernière intervention10 mars 2014
-
16 juil. 2010 à 00:00
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 2014
-
19 juil. 2010 à 19:53
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
A voir également:
La limite de temps pour l'exécution du script a été atteinte
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 20148 16 juil. 2010 à 12:46
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.
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 16 juil. 2010 à 07:53
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..
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 20148 16 juil. 2010 à 08:05
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 ;)
pysco68
Messages postés681Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention21 août 20148 16 juil. 2010 à 08:10
@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
Vous n’avez pas trouvé la réponse que vous recherchez ?
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 16 juil. 2010 à 08:45
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.
mailliam
Messages postés261Date d'inscriptionmardi 2 juillet 2002StatutMembreDernière intervention10 mars 20143 16 juil. 2010 à 12:42
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