Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysłanie mailingu do tysiąca osób
Forum PHP.pl > Forum > PHP
gg1985
Witam,

Wywala mi się skrypt (limit wykonania skryptu 30 sek), gdy wysyłam mailing do prawie tysiąca osób. Robię to przez funkcję mail, która jest wewnątrz foreacha. Jak można inaczej?

Pozdrawiam
nospor
Maile wysyła się partiami, np po 50 i za jakiś czas powtarza się proces przy użyciu np. cron.
gg1985
Aha, a coś tam słyszałem o jakiś specjalnych klasach do wysyłania (np. chyba mailer), ale to nic mi nie pomoże?
nospor
Klasy nie mają nić do Twojego problemu.
Wyjaśniam ci, że maile masz wysyłać paczkami po x maili a nie wszystkie 1000 na raz.
markonix
Cytat(nospor @ 19.10.2011, 13:34:09 ) *
Klasy nie mają nić do Twojego problemu.
Wyjaśniam ci, że maile masz wysyłać paczkami po x maili a nie wszystkie 1000 na raz.

Troszkę mają bo gdy użyje się dobrej klasy....

Tutaj konkrety:
http://swiftmailer.org/docs/plugins.html#antiflood-plugin
nospor
Na fakt, że ma 30 sekund na wykonanie skryptu to ta klasa nie ma żadnego wpływu. Nadal należy dzielić te 1000 maili na paczki.
leafnode
Można też to zrobić trochę inaczej - rozsyłanie na wiele adresów zostawić serwerowi pocztowemu. Można podzielić listę na grupy po powiedzmy 50, i te 50 adresów wstawić do pola BCC, w To: wstawiając np. nasz adres (powszechna praktyka). Oczywiście trzeba wybadać najpierw, ile adresów najwięcej obsłuży nasz serwer.

ln.
pitbull82
No właśnie też się tak zastanawiałem jak to najlepiej zrobić - przy rozsyłce małej liczby maili, po prostu w cronie co minutę wysyłam 1 mail i po sprawie. Jak jednak to sensownie zrealizować w przypadku większej liczby maili? Teoretycznie przy każdym cronie mogę wysyłać x maili, ale może tak być, że crony zajdą na siebie przez co niektórzy dostali by te same maile. Jest jakieś sprawdzone rozwiązanie czy może trzeba sobie wymyślić sposób, żeby takie przypadki nie miały miejsca.
by_ikar
Cytat(pitbull82 @ 20.10.2011, 17:45:36 ) *
No właśnie też się tak zastanawiałem jak to najlepiej zrobić - przy rozsyłce małej liczby maili, po prostu w cronie co minutę wysyłam 1 mail i po sprawie. Jak jednak to sensownie zrealizować w przypadku większej liczby maili? Teoretycznie przy każdym cronie mogę wysyłać x maili, ale może tak być, że crony zajdą na siebie przez co niektórzy dostali by te same maile. Jest jakieś sprawdzone rozwiązanie czy może trzeba sobie wymyślić sposób, żeby takie przypadki nie miały miejsca.


Zakładam że maile przechowujesz w bazie, więc albo kasujesz maila którego wysłałeś, albo zapytanie (aktualizacje rekordu, o informację że mail został wysłany) obejmujesz transakcją, dzięki czemu baza danych zajmie się tym żebyś 2x tego samego zadania nie wykonał.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.