sitemizde biz (spam değil, onlar iptal olabilir ve bu soru ile ilgili değil) bizim etkinlik hakkında müşterilerine haber göndermek gerekir. Biz her gün yaklaşık 04:00 de e-postalar göndermek zorunda, bu yüzden doğal olarak ben e-postalar gönderen bir url çağıran bir cron işi oluşturma hakkında düşündüm. Sonra ben biraz araştırma yaptım ve aynı zamanda tüm kullanıcılara e-posta gönderme nedeniyle sunucu kaynaklarının hogging, yoksa bunu biz bir spam sitesi olarak işaretlenmiş konum olasılığı ya en iyi seçenek olmayabilir gördüm, diye düşündüm böyle bir şey yapıyor:
create a cron job that calls a php script (script1.php) the script creates a cron that is executed every 10 minutes and calls another script(script2.php) script2.php checks if there are any users that havent' been mailed, if there are, it does a query on the database and retrieves x entries that haven't been mailed yet sends the mails to those users updates the database flag so that they won't be emailed again if there aren't any, then it sets the "mail sent" flags to their default value, and deletes the new cron (the one running every 10 minutes) or overwrites it with the default one (every day at 4 AM)
kodu, script2 bu gibi bir şey olacaktır:
$unsentEmails = $users->getUnsentEmails($limit);
if ($unsentEmails != 0 ){
mailer::sentEmails($emailData);
$user->markSentNewsletter($userData);
}
else{
utils::resetCronTab();
$user->resetSentNewsletter();
}
kod eksikliği için özür dilerim, ama ne yapmak istediğim bu senaryoda iyi çözüm olup olmadığını anlamaya çalışıyorum. Ayrıca, bilginin doğası nedeniyle bunun mümkün olmadığını harici servisini kullanarak önlemek çalışıyorum gönderdi.
Herhangi bir yardım mutluluk duyacağız
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
i zaten cli php kullanarak beri ben, bu daha iyi bir çözüm buldum, ben komut dosyası çağırır ve komut dosyası içinde ben birkaç e-postalar göndermek bir cron yapılmış, ardından bir sonraki toplu iş için beklemek uyku ($ saniye) komutunu kullanın . test sunucusu üzerinde çalışır
cevap herkese teşekkür