Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> subskrypcja, pewna myśl :)
fido20
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Białystok

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


Witam,

Na swojej stronie mam system subskrypcji, dla ludzi którzy podadzą swojego maila rozsyłana jest wiadomość w momencie gdy ktoś z użytkowników doda na stronę nową informację. Niestety obecne rozwiązanie jest dosyć uciążliwe dla tych osób które informację dodają , a mianowicie problem tkwi w tym że niektórzy mają po 200 - 300 subsryptorów (nie wiem jak to napisac ) . Czas potrzebny na pobranie danych o mailach i wysłanie na każdy adres odpowiedniego maila , przekracza maksymalny czas oczekiwania przeglądarki na odpowiedź z serwera. Co za tym idzie użytkownik zamiast zobaczyć potwierdzenie dodania informacji widzi "Nie można wyświetlić strony ...". Wpadłem na pomysł żeby sam proces rozsyłania maili był realizowany w ten sposób , że kawałek kodu odpowiedzialny za rozsyłanie umiesciłbym w oddzielnym pliku który byłby wykonywalny z powłoki i nie zwracał żadnych informacji zwrotnych do użytkownika, (tak jakby wykonywany byłby w tle) . Nie wiem czy dobrze wytłumaczyłem o co mi chodzi , może dam tu prosty przykład . Użytkownik dodaje info, info wpisywane jest do bazy danych , jeżeli wpisało się ok , wysyłane jest polecenie do systemu "uruchom skrypt wyslij.php z parametrem user = nazwa uzytkownika" a kolejna linijka kodu to potwierdzenie dodania wpisu do bazy wyświetlana w przeglądarce użytkownika. W tym miejscu chciałbym się spytać , czy to wogle jest do zrealizowania i czy rozwiąże to problem przekraczania czasu na odpowiedz z serwera . No i ew czy jest jakieś inne , lepsze, bardziej eleganckie , ogólnie lepsze rozwiązanie takiego problemu . Problem ten pojawia się gdy użytkownik ma "zapisanych na siebie" z 100 - 200 maili .

Pozdrawiam
Go to the top of the page
+Quote Post
scanner
post
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Wybranie adresów z bazy i wysłanie meila zajmuje więcej niż 30 sekund?
Masz niezły bajzel w kodzie moim zdaniem.
Go to the top of the page
+Quote Post
vala
post
Post #3





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 12.01.2005

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


albo serwer smiga na jakims starym procku:)
Go to the top of the page
+Quote Post
DavidPL
post
Post #4





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 27.04.2004
Skąd: Rzeszów

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


Mam inną propozycje.
Maile wysyłasz w pętelce, więc w pętelce możesz także sprawdzać czas działania skryptu. Jeśli przekroczy powiedźmy 25 sekund robisz zrzut tego co pozostało do sesji, a użytkownikowi pokazujesz informację (może być w %) ile już się wysłało i robisz odświeżenie strony i wysyłasz kolejne dane.

Może nie jest to jakiś super wyrafinowany sposób ale pozwili użytkownikowi kontrolować proces wysyłania i zapewni mu podgląd stanu wysyłki.
Go to the top of the page
+Quote Post
fido20
post
Post #5





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Białystok

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


Cytat(scanner @ 2005-04-06 07:24:59)
Wybranie adresów z bazy i wysłanie meila zajmuje więcej niż 30 sekund?
Masz niezły bajzel w kodzie moim zdaniem.

Kod odpowiedzialny za wysyłke wygląda tak


  1. <?php
  2.  
  3. $sql = &#092;"SELECT mail FROM tabela WHERE user='$uzytkownik'\";
  4. $wykonaj = mysql_query ($sql);
  5. while($wiersz = mysql_fetch_array($wykonaj))
  6. {
  7. $mail = $wiersz['mail'];
  8. $wiadomosc = &#092;"tresc\";
  9. $header = &#092;"From: rnReply-To: rn\";
  10. mail (&#092;"$mail\", \"temat\", $wiadomosc, $header);
  11. }
  12.  
  13. ?>


Nic innego nie przyszło mi do głowy , nie wiem czy jest tu jakiś bałagan , aż tak zaawanosowany nie jestem by to ocenić (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Nie wysyłaj tych maili w pętli.
Zainteresuj się jakąś klasą, która robi to na poziomie bezpośredniej komunikacji z serwerem SMTP.
Np.: PHPMailer
Go to the top of the page
+Quote Post
fido20
post
Post #7





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Białystok

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


Cytat(mike_mech @ 2005-04-06 12:26:30)
Nie wysyłaj tych maili w pętli.
Zainteresuj się jakąś klasą, która robi to na poziomie bezpośredniej komunikacji z serwerem SMTP.
Np.: PHPMailer

Za Twoją radą zainteresowałem się to klasą , jednak nie wiem jak ją wykorzystać aby nie używając pętli wysłać jednego maila do wielu osób (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
mike
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


  1. <?php
  2.  
  3. require(&#092;"class.phpmailer.php\");
  4.  
  5. $objMail = new PHPMailer();
  6.  
  7. $objMail->From  = &#092;"list@mydomain.com\";
  8. $objMail->FromName = &#092;"List manager\";
  9. $objMail->Host  = &#092;"smtp1.site.com\";
  10. $objMail->Mailer  = &#092;"smtp\";
  11.  
  12. $arrEmail = array( 'jeden@serwer.pl', 'dwa@serwer.pl', 'trzy@serwer.pl', 'cztery@serwer.pl' );
  13.  
  14. $objMail->Body  = 'Body';
  15.  
  16. for( $i = 0, $intLast = count( $arrEmail ); $i < $intLast; $i++ )
  17. {
  18. $objMail->AddAddress( $arrEmail[ $i ] );
  19. }
  20.  
  21. $objMail->Send();
  22.  
  23. ?>
Go to the top of the page
+Quote Post
fido20
post
Post #9





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Białystok

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


A może wiesz czy jest jakiś sposób żeby "przysłonić" te wszystkie adresy email np zeby zamiast serwer@jede.pl; serer@dwa.pl ... bylo tylko np Subskrypcja (w polu do jak się list np w outlooku otworzy)

Jakby to dało sie jeszcze zrobić byłoby po prostu super (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mike
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Przyznam że nie za bardzo wiem o co ci chodzi ( nie używam Outlook'a ), ale podejrzewam że o to :
  1. <?php
  2.  
  3. require(&#092;"class.phpmailer.php\");
  4.  
  5. $objMail = new PHPMailer();
  6.  
  7. $objMail->From  = &#092;"list@mydomain.com\";
  8. $objMail->FromName = &#092;"List manager\";
  9. $objMail->Host  = &#092;"smtp1.site.com\";
  10. $objMail->Mailer  = &#092;"smtp\";
  11.  
  12. $arrEmail = array( 
  13. array( 'jeden@serwer.pl', 'Mike' ),
  14. array( 'dwa@serwer.pl', 'Ziutek' ),
  15. array( 'trzy@serwer.pl', 'Koleś' ),
  16. array( 'cztery@serwer.pl', 'Ktoś' )
  17. );
  18.  
  19. $objMail->Body  = 'Body';
  20.  
  21. for( $i = 0, $intLast = count( $arrEmail ); $i < $intLast; $i++ )
  22. {
  23. $objMail->AddAddress( $arrEmail[ $i ][ 0 ], $arrEmail[ $i ][ 1 ] );
  24. }
  25.  
  26. $objMail->Send();
  27.  
  28. ?>
Go to the top of the page
+Quote Post
fido20
post
Post #11





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Białystok

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


O coś takiego , dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 3.10.2025 - 19:27