Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mailing do 50 000 uzytkownikow
Forum PHP.pl > Forum > Przedszkole
Skok
Ja zorganizowac mailing do ponad 50 000 uzytkowniko? Zaproponujci jakies fajne klasy albo inne rozwiazania. Dzieki.

pozdrawiam
kanji
To gidześ już było na forum poszukaj pod hasłem mailbomber czy coś takiego, ale wątpie żeby ktoś Ci powiedział jak się spam'uje snitch.gif
skok
Nie chodzi o spam, tylko realizacje newslettra.
MartinezB
To o czym na pewno trzeba pamiętać przy wysyłaniu maili do 50 000 userów to to, że każdy skrypt php ma określony czas działania, np. 30 sekund. Po tym czasie jego wykonywanie zostaje natychmiast przerwane. Wysłanie 50 000 maili z pewnością trwa dłużej niż 30 sekund, więc musisz zadbać, aby czas wykonywania skryptu był dostosowany do Twoich potrzeb.

Aby zmienić czas wykonywania skryptu skorzystaj z polecenia set_time_limit().

Kod
<?
set_time_limit(360);
?>


a kod do wysyłania i pbierania adresów z bazy to:

  1. <?
  2. if (mysql_connect($sql_serwer, $sql_login, $sql_haslo) 
  3.   and mysql_select_db($sql_baza)) 
  4. {
  5.   $wynik = mysql_query(&#092;"SELECT mail FROM user\");
  6.   $rekordow = mysql_result(mysql_query(&#092;"SELECT FOUND_ROWS()\"),0);
  7.   set_time_limit($rekordow*5);
  8.   while($dane = mysql_fetch_array($wynik)) 
  9.   {
  10. $mail = $dane[&#092;"mail\"];
  11. mail($mail,&#092;"tytul\",\"tresc\",\"nadawca@serwer.pl\");
  12. echo &#092;"wyslano maila do: $mail<br />\";
  13.    }
  14.    mysql_close();
  15. } 
  16. else 
  17. echo &#092;"Nie można połączyć się z bazą danych\";
  18. ?>


Bezpiecznie jest założyć, że czas wysyłania jednego listu trwa ok. 5 sekund. Możesz więc użyc konstrukcji, która pomnoży ilość odbiorców * 5:
Kod
set_time_limit($rekordow*5);
Skok
Mhm, dzieki,

czyli polecacie samemu cos napisac, a nie szukac gotowych klas w necie?
gladiror
Najlepiej napisać samemu coś. W sumie do kilkudziesięciu użytkowników wystarczy zrobić pętle while i pobrać dane np. z bazy danych... ALe przy takich ilości trzeba się zastanowić w jaki sposób zmniejszyć ilość wysyłanych maili... W sumie możesz zrobić to w zwykłym outlooku (na upartego). Jeżeli masz pocztę, która pozwala na wysyłanie dużej ilości maili to w pole UDW (pole to pozwala na to, że użytkownicy nie będę mogli widzieć to ilu osób został wysłany e-mail) wpisujesz z bazy danych adresy (zrób skrypt, który wyciągnie wszystkie adresy i da po każdym średnik albo przecinek - nie pamiętam dokładnie... Kombinuj ;-)
johny_s
mozna rowniez zrobic taki myk jak robia niektore portale np. ze wysylasz maila pod jeden adres widoczny w naglowku listu np. uzytkownicy@serwisu.pl i zmieniasz naglowek maila i wszystkie maile wysylasz tylko raz pod ten wlasnie adres a reszte jako kopia ukryta. W ten sposob czas wykonywania skryptu ogranicza sie do czasu pobrania userow z bazy, a cala reszte tzn. rozeslanie pozty jest juz na glowie serwera pocztowego
elessar
A moze by tak Sajax'a uzyc? Piszemy sobie procedurke wysylajac maila i np skorzystac z sesji aby pamietac ktory adres email byl ostatni. I tak dlugo ja wykonywac az wyslemy do wszystkich.
Dodatkowo mozna z gory okreslic pasek postepu i go rysowac co uatrakcyjni sam proces wysylania. A jak dolozysz status udany/nieudany to bedziesz mial juz bajerancki skrypcik.

Szybkie i niezawodne biggrin.gif
rachwal
Ja uzywam do tego, tego:
http://pear.php.net/search.php?q=mail_queu...ackages&x=0&y=0
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.