Рассылка рассылки с использованием AJAX, чтобы избежать тайм-аута PHP - PullRequest
1 голос
/ 29 ноября 2011

Мне нужно отправить рассылку.У меня уже есть сценарий PHP, который отправляет массовые электронные письма, но он не будет работать долго, поскольку база данных электронной почты растет из-за времени выполнения сценария PHP max.

Итак, чтобы избежать этого, я нашел решение: Iя бы вызвал мой PHP-скрипт с использованием AJAX в javascript, и я передам ему параметр $ _GET с числом 20, чтобы скрипт отправлял только 20 писем.Тогда AJAX получит ответ об успешном выполнении и будет вызывать мой скрипт снова и снова, пока не будут отправлены все электронные письма.

Возможно ли это?Я спрашиваю, потому что я никогда не видел такого решения, поэтому мне интересно, если оно реально (довольно сложно реализовать это в моей среде PHP, поэтому я сначала спрашиваю экспертов здесь)

Подводя итогздесь кодовый скелет:

<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>

Итак, есть ли препятствия?Большое спасибо.

Ответы [ 3 ]

3 голосов
/ 29 ноября 2011

Использование AJAX

Конечно, вы можете сделать это, используя AJAX , но в этом случае вы также должны убедиться, что параметр error также определен для функции .ajax() в jQuery (см. документацию) . Это обеспечит запуск сценария, даже если предыдущий вызов вернул какую-то ошибку (например, ошибку в вашем PHP-сценарии или что-то в этом роде).

Использование заданий Cron

Другая идея состоит в том, чтобы использовать CRON jobs , который будет вызывать ваш скрипт с постоянным интервалом, и вам не нужно будет постоянно запускать ваш браузер. Подробнее о Кроне . Если вам нужно решение для Windows (Cron на основе Unix), вы можете использовать, например, Cron для Windows .

1 голос
/ 29 ноября 2011

Вы можете использовать set_time_limit(0), чтобы ваш скрипт работал столько, сколько нужно.

1 голос
/ 29 ноября 2011

Да, это будет работать. Но вы также можете использовать функцию PHP set_time_limit, но некоторые хосты предпочитают ее блокировать.

...