MISE À JOUR: configuration testée - cela fonctionne - mais mon web-hôte ne peut pas gérer 600 email en 6 secondes environ - j'avais chaque connexion attendre 20 secondes puis envoyer un courrier - ceux sont tous passés parPHP demande multiple post
J'ai une liste de diffusion avec plus de 600 emails J'ai une fonction pour envoyer les 600+ emails
Malheureusement, il y a une limite quant au temps d'exécution (90 secondes) - et donc le script est arrêté avant est terminé. Je ne peux pas changer l'heure avec set_time_limit(0)
, car elle est définie par mon hébergeur (pas dans un fichier ini que je peux changer non plus)
Ma solution est de faire des demandes de post à partir d'un fichier principal vers un sous-fichier envoyer des morceaux de 100 mails à la fois. Mais seront-ils envoyés sans délai - ou attendront-ils une réponse avant d'envoyer la prochaine demande?
Le code:
for($i=0;$i<$mails;$i+100) {
$url = 'http://www.bedsteforaeldreforasyl.dk/siteadmin/php/sender.php';
$myvars = 'start=' . $i . '&emne=' . $emne . '&besked=' . $besked;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$response = curl_exec($ch);
curl_close($ch);
}
$mails
est le nombre total de bénéficiaires
$start
est le numéro de la ligne de départ i l'instruction SQL
Est-ce que ce (comme je l'espère) commencer à 6 connexions parallèles - ou est-ce que (comme je le crains) commencer 6 procès l'un après l'autre?
Dans le script de réception J'ai:
<br>
ignore_user_abort(true);<br>
$q1 = "SELECT * FROM maillist LIMIT $start,100 ORDER BY navn";
Je ne suis pas sûr à 100% mais il semble que ça va commencer 6 procesesses – Tomm
Est-ce que chaque attendre l'autre pour compléter - ou il sera en même temps? –
Je n'ose pas répondre à cette question Je ne suis pas certain – Tomm