![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
Witam
Potrzebuje napisać newslettera do swojego CMSu, mam tylko pewne pytania związane z pewnymi rozwiązaniami. Zakładając że CMs będzie skupiał dużą ilość użytkowników nie mogę wysłać mailem tego newslettera za jednym zamachem bo: 1) pewnie mi zbanują maila za spam 2) pewnie się zwiesi strona. Nie chce rozsyłać spamu itp, newsletter jest dla ludzi którzy zgadzają się go otrzymywać. No ale do rzeczy Jak rozwiązalibyście ten problem? Nie chodzi mi o próbki kodu itp, tylko czysto algorytmiczne posunięcia. Z góry dziękuje Pozdrawiam P.S Wesołych świąt (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Nie stosuję rozwiązania 1 więc pominę je.
Rozwiązanie 2: Ustalasz w Cronie przedział godzinowy od której do której wysyła co ile i zapominasz o wszystkim (IMG:style_emoticons/default/winksmiley.jpg) Musisz tylko skrypt tak przystosować, żeby brał paczki sobie po ileś maili, ale nie robił nic gdy niema nic do wysłania. Ja w ten sposób mam i działa ładnie, a Cron jest tak ustawiony, że co 6 minut 24/7 chodzi. Odpalam więc wysyłkę i rusza ona w przeciągu 6 minut. Nieważne dla mnie czy potrwa całość w 10 czy w 20 przebiegach (IMG:style_emoticons/default/winksmiley.jpg) Rozwiązanie 3: Skrypt pisze się w sposób rekurencyjny. Uruchamiamy skrypt który, sprawdza czy ma komuś coś do wysłania. Jeśli nie - killuje się. Jeśli tak to wywołuje sam siebie i daje sleep na 20 sekund. Po wyjściu ze sleep robi wysyłkę, oznacza wysłane i kończy się. Widzisz trick? W danej chwili może działać kilka skryptów tychże, choć większość jest uśpiona. Działają do padłego i jeśli dobrze napiszesz to odpalasz i możesz iść. Jak zapewne widzisz rozwiązanie 3 ma pewną wadę. Skrypt paść może tylko jeśli padnie serwer, bo nic nie może go wznowić samo z siebie. Źle napisany będzie chodził cały czas i nie da się go zatrzymać bez ingerencji w konsoli, bo każde wywołanie skryptu jest niejako osobnym procesem użytkownika. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 13:31 |