Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mail() a obciążenie serwera
Forum PHP.pl > Forum > PHP
shycat
Witam, mam taki problem "teoretyczny" smile.gif z używaniem funkcji mail() (lub jakiejś gotowej klasy typu phpmailer). Prowadzę pewien portal społecznościowy i chcę dodać funkcję wysyłania e-maila do odbiorcy kiedy ten jest offline i dostał jakąś wiadomość na skrzynkę.

Boje się jednak, że takie "ciągłe" wysyłanie emaili (w końcu użytkownicy cały czas przesyłają sobie różne wiadomości, oczka, prezenty itd) zbytnio obciąży serwer. Zastanawiam się czy są jakieś inne metody powiadomień emailowych bez mocnego obciążenia serwera.

Wymyśliłem sobie taki sposób:


w momencie gdy użytkownik prześlę innemu wiadomość w bazie zapisywana jest jakaś tam instrukcja "napisz wiadomosc do... o tym i o tym...", następnie z bazą danych połączy się inny serwer (np. pierwszy dobry dedyk, a drugi jakiś tani dedyk) i te emaile będą wysyłane z tego drugiego serwera, a następnie usuwanie odpowiedniego wpisu z DB (albo po prostu pobieranie DB, czyszczenie, wysyłanie).

Możecie coś doradzić? smile.gif
tehaha
skoro serwer wytrzymuje obciążenie wynikające z aktywności użytkowników to nie powinno być problemu, jeżeli do kilku funkcji dodasz wysłanie tekstowego komunikatu na e-mail.
shycat
Tak wytrzymuje, ale chwilami przy ok. 1000 - 1500 aktywnych użytkowników, którzy wysyłają całą masę wiadomości - lecz bez dodatkowego obciążenia jakim będzie wysyłanie powiadomień mail()-em do wielu z wysłanych wiadomości. Wole też trochę próbować przewidzieć przyszłość, ponieważ liczba użytkowników rośnie, a nie chodzi też o to, żeby cały czas zmieniać typ serwera dedykowanego i płacić coraz więcej skoro mogą być prostsze metody
tehaha
ciężko coś powiedzieć konkretnego bez znajomości skryptu i ilości tych e-mail, możliwe, że szukasz optymalizacji nie tam gdzie trzeba, bo dodanie wysłania powiadomienia nie powinno aż tak drastycznie zwiększyć obciążania, jeżeli serwis jest obciążony to warto by się przyjrzeć zapytaniom sql, dodać jakiś cache itp. bo tak na pierwszy rzut oka to trochę dziwny pomysł, no chyba, że faktycznie to jakaś społecznościówka, gdzie ludzie tylko siedzą i wysyłają te duperele, najlepiej zanim podejmiesz decyzję to wpisuj sobie do jakiejś tabeli czas ewentualnego wysłania powiadomienia i zobacz ile tego będzie na godzinę.
shycat
No, to właśnie jest społęcznościówka i ludzie na prawdę wysyłają takie pierdoły, że szok... cachowanie, optymalizacja sql - o to oczywiście też staram się dbać. Chyba nie pozostaje mi nic innego jak uruchomienie opcji powiadomień e-mailowych i sprawdzenie na przestrzeni kilku dni jak będzie wyglądało obciążenie... choć mimo wszystko, zrobię w ten sposób, że nowa wiadomość wysyłana do użytkownika offline będzie zapisywała się w bazie danych, a skrypt Corn będzie się wykonywał np. co 15 minut i nie wysyłał 100 emaili "masz wiadomosc..." tylko "masz 100 nowych wiadomości w swojej skrzynce", a jeżeli użytkownik sie zaloguje w przeciagu tych 15-min to baza bedzie czyszczona, zeby nie wysylac niepotrzebnej wiadomosci. Tak sobie wymyslilem cool.gif tongue.gif
tehaha
no ta druga opcja co opisałeś "masz 100 wiadomości" brzmi o wiele lepiej, bo też użytkownicy raczej nie byli by zadowoleni jakby dziennie dostawali 50-100 wiadomości z Twojego serwisu.
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.