Je dois envoyer des newsletters. J'ai déjà un script PHP qui envoie des e-mails en masse, mais cela ne fonctionnera pas tant que la base de données de messagerie augmentera en raison de la durée d'exécution maximale du script PHP.

Donc, pour l'éviter, j'ai trouvé une solution: j'appellerais mon script PHP en utilisant AJAX en javascript et je lui donnerais le paramètre $ _GET avec un nombre de 20 pour que le script n'envoie que 20 emails. Alors AJAX recevrait une réponse de succès, et appellerait mon script encore et encore jusqu'à ce que tous les e-mails soient envoyés.

C'est possible? Je demande parce que je n'ai jamais vu une telle solution, donc je me demande si elle est réelle (c'est un peu difficile à implémenter dans mon framework PHP, donc je demande d'abord aux experts ici)

Pour résumer, voici un squelette de code:

<script>
var emailCount = 1000; //would get this from DB
var runCount = 20; //number of emails sent in one cycle
var from = 0; //start number
function sendMail(){
    if(from<emailCount){
        jQuery.ajaxfunction({
            path: 'script.php?from='+from+'&count='+runCount
            successFc: function(){
                from+=runCount;
                sendMail();
            }
        })
    }
}
sendMail();
</script>

Alors, y a-t-il des obstacles? Merci beaucoup.

1
simPod 29 nov. 2011 à 04:20

3 réponses

Meilleure réponse

Utilisation d'AJAX

Bien sûr, vous pouvez le faire en utilisant AJAX , mais dans ce cas, vous devez également vous assurer que le paramètre error est également défini pour la fonction .ajax() dans < a href = "http://api.jquery.com/jQuery.ajax/" rel = "nofollow"> jQuery (voir documentation) . Cela garantira que le script sera invoqué même si l'appel précédent a renvoyé une erreur (telle qu'une erreur dans votre script PHP ou quelque chose).

Utilisation des tâches Cron

Une autre idée consiste à utiliser des travaux CRON , qui appellent votre script à intervalle constant et vous n'aurez pas besoin que votre navigateur fonctionne tout le temps. En savoir plus sur Cron. Si vous avez besoin d'une solution pour Windows (Cron est basé sur Unix), vous pouvez utiliser par exemple Cron pour Windows.

3
zizozu 29 nov. 2011 à 01:49

Oui, cela fonctionnera. Mais vous pouvez également utiliser la fonction PHP set_time_limit, mais certains hôtes préfèrent la bloquer.

1
Halcyon 29 nov. 2011 à 00:21

Vous pouvez utiliser set_time_limit(0) pour exécuter votre script aussi longtemps que nécessaire.

1
alex 29 nov. 2011 à 00:22
8304234