У меня есть более 10K email id - это моя база данных. Я пытаюсь отправить им письмо с php mailer. Проблема заключается в том, что мой хостинг-провайдер позволяет отправлять 60 сообщений в минуту.PHP-Ajax: Задержка массовой отправки по электронной почте
Итак, я думаю, мне нужно изменить свой код электронной почты, чтобы ограничить 60 сообщений электронной почты в минуту.
Вот код, который я написал до сих пор.
$result = $mysqli->prepare("SELECT uid,email FROM users where address IS NULL and city IS NULL");
$result->execute();
$result->store_result();
$result->bind_result($uid,$email);
while ($result->fetch()){
$email = $email;
--Code to send email--
}
Я думал, что поставил команду sleep в цикл, но я где-то читал, что это плохая практика.
Я проверил этот вопрос PHP sleep delay
и обнаружили, мы можем использовать AJAX для того же.
Вы можете использовать Ajax. И используйте таймаут, чтобы вызывать свой PHP-скрипт каждые несколько секунд. Это позволит избежать медленной загрузки скрипта. А также вы можете продолжать делать это постоянно (текущий цикл будет работать только 33 секунды, а затем остановится).
Есть ли какие-либо рекомендации, как я могу реализовать AJAX или любой другой способ достичь этого.
Вместо этого, чтобы использовать команду спящего режима, я предлагаю использовать задание cron, которое будет запускаться каждую минуту, и ваш скрипт будет отправлять только 60 писем в скрипте, чтобы вы могли взять один флаг в базе данных для получения отправленной почты или нет (вы может принимать одно поле базы данных is_mail_sent. 0 ИЛИ 1, 0 = не отправлено, 1 = отправлено). и в то время как электронная почта, отправленная из скрипта, вы можете обновить этот флаг. –
Отправка электронной почты предоставляется по запросу. Мне не нужно отправлять их регулярно один раз в неделю. – Ironic
, тогда вы можете установить работу cron один раз в неделю. –