Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> System newslettera/mailingu - optymalizacja
gachowy
post 25.11.2013, 01:13:08
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.09.2010

Ostrzeżenie: (0%)
-----


Witam.

Potrzebuję małej porady. W jaki sposób najlepiej zoptymalizować kwestię wysyłania newslettera/mailingu do powiedzmy 500 osób?

Aktualne rozwiązanie jakie stosuje, to mniej więcej coś takiego, uruchamiane przez CRONa:
  1. <?php
  2.  
  3.  
  4. $rec = array(); // array with ~500 mails from DB
  5.  
  6. $message = 'Lorem ipsum'; // message from DB (more text+HTML than this Lorem Ipsum - simple mail template + 200-300 words)
  7.  
  8. foreach($rec as $r)
  9. {
  10. $to = $r;
  11. $subject = $message;
  12. $headers = 'MIME-Version: 1.0' . "\r\n";
  13. $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  14. $headers .= 'From: Site.com <no-reply@site.com>' . "\r\n";
  15.  
  16. mail($to, $subject, $message, $headers);
  17. }


Z tego co obliczyłem, zajmuje to mniej więcej "1.0787600835164 Min". Czy taki execution time tego, zadziała na standardowym configu php.ini?

Prosiłbym o podpowiedź:
-czy będzie to lepiej działało z wykorzystaniem SMTP zamiast mail()?
-czy podzielić to wysyłanie na kilka tur, jeśli tak, to w jaki sposób najlepiej, aby jedno uruchomienie przez CRONa, rozesłało wszycho?

Z góry dzięki za odpowiedzi smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
c1chy
post 25.11.2013, 01:18:15
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 16
Dołączył: 21.06.2013

Ostrzeżenie: (0%)
-----


Wszystko zależy od hostingu 1 minuta to nie długo, jednak niektóre skrypty mogą mieć 30 sekund, nie ma czegoś takiego jak standardowy config php.ini. Jeżeli chcesz zrobić to cronem to zapisuj maila do wysłania w bazie danych a ze skryptu pobieraj rekordy i po wysłaniu usuwaj z kolejki cron możesz uruchamiać np. co 5 minut czy nawet co 1 minutę, jeżeli nie będzie maili w kolejce to skrypt od razu praktycznie zakończy swoje działanie.

Nie sądzę że SMTP() przyśpieszy tutaj cokolwiek, będzie potrzebny dodatkowy czas na komunikację z zewnętrznym serwerem.


--------------------
devstrefa.wordpress.com
Go to the top of the page
+Quote Post
gachowy
post 25.11.2013, 02:09:23
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.09.2010

Ostrzeżenie: (0%)
-----


Ze 'standardowym configiem php.ini' chodziło mi o ustawienia z 'czystej' instalacji serva www smile.gif

Dzięki wielkie za podpowiedź smile.gif

Zastosuję więc takie rozwiązanie - po wygenerowaniu owego maila (cronjob co owy tydzień/dzień), co 5 minut uruchamiać będę skrypt, który zajmie się rozesłaniem maila do kolejnych x odbiorców znajdujących się na liście oczekujących do wysyłki smile.gif
Go to the top of the page
+Quote Post
acidm
post 25.11.2013, 10:46:21
Post #4





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Wysyłaj przez SMTP,w odstępach,paczkami.Odstępy od kilku do kilkunastu minut.Paczki po kilkadziesiąt maili.Na serię wysyłki (paczkę) przez smtp z serwerem łączysz się raz, każde wywołanie mail() to nowe połączenie,ogółem lepiej z mail() sobie darować bo maile mogą z automatu trafić do śmietnika.Domyślny max_execution_time to 30 sek.
Go to the top of the page
+Quote Post
Pyton_000
post 25.11.2013, 21:38:32
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Cytat(acidm @ 25.11.2013, 10:46:21 ) *
Domyślny max_execution_time to 30 sek.

dla standartowo odpalanych skryptów via przeglądarka. Jeżeli chodzi o skrypty via CLI to te ograniczenia nie obowiązują. Z tego co pamiętam to chyba jest brak limitu czasu wykonania.
Go to the top of the page
+Quote Post
acidm
post 26.11.2013, 23:00:46
Post #6





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Dobrze wiedzieć smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 17:09