Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem przy wysyłaniu maila do 200 osób
Norbit_24
post
Post #1





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

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


Chciałem wysłać maila do 2000 osób i wywaliło mi taki błąd:


Cytat
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@xxx.pl and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.



Więc pomyslałem, że powodem może byc to że albo jest blokada prze wysyłaniem za duzo maili naraz. Albo serwer nie wyrabia.
Więc chcę zrobić wysyłkęe maila na "party" (ale że słabo umiem php więc mam problem..;/)

  1. if(isset($_GET['mail'])=='wyslij')
  2. {
  3.  
  4. $temat1 = "$_POST[temat]";
  5. $message = "$_POST[tresc]\r\n";
  6. $header = 'MIME-Version: 1.0' . "\r\n";
  7. $header .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  8. $header .= 'From: xxx.pl <info@xxx.pl>'."\r\n";
  9.  
  10.  
  11. $sql = mysql_query("SELECT id FROM users");
  12. $r = mysql_num_rows($sql);
  13. //echo $r."<br /><br />";
  14.  
  15. $od=0;
  16. $do=$od+99;
  17. for($od=0; $do>=$r; $od+99)
  18. {
  19. //echo $od."<br />";
  20. //echo $do."<br /><br />";
  21.  
  22. $result = mysql_query("SELECT email FROM users LIMIT $od, $do");
  23. while($r = mysql_fetch_array($result)) {
  24. mail($r['email'],$temat1,$message,$header)
  25. or die('Nie udało się wysłać wiadomości');
  26. }
  27.  
  28.  
  29. }
  30. }


jak sprawdziłęm co sie wyswietla w zmiennych $od i $do to tylko liczby $od = 0 , $do=99

A ja chcę żeby się to powiększało..
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Po pierwsze jeżeli używasz w pętli
  1. for($od=0; $do>=$r; $od+99)
zmiennej $r, która reprezentuje liczbę userów, to nie podmieniaj jej wewnątrz pętli na inną:
  1. $r = mysql_fetch_array($result))


Po drugie ta pętla ma złą konstrukcję powinno być:
  1. for($od=0; $od<=$do; ++$od)


Ten post edytował tehaha 7.02.2010, 16:11:03
Go to the top of the page
+Quote Post
Norbit_24
post
Post #3





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

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


Po poprawieniu jest tak: ale dalej coś nie działa, bo wysyła maila tyle razy ile jest userów smile.gif

  1. if(isset($_GET['mail'])=='wyslij')
  2. {
  3.  
  4. $temat1 = "$_POST[temat]";
  5. $message = "$_POST[tresc]\r\n";
  6. $header = 'MIME-Version: 1.0' . "\r\n";
  7. $header .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  8. $header .= 'From: xxx.pl <info@xxx.pl>'."\r\n";
  9.  
  10.  
  11. $sql = mysql_query("SELECT id FROM users");
  12. $r1 = mysql_num_rows($sql);
  13. //echo $r."<br /><br />";
  14.  
  15.  
  16. $do=$r1;
  17. for($od=0; $od<=$do; ++$od)
  18. {
  19. //echo $od."<br />";
  20. //echo $do."<br /><br />";
  21.  
  22. $result = mysql_query("SELECT email FROM users LIMIT $od, $do");
  23. while($r = mysql_fetch_array($result)) {
  24. mail($r['email'],$temat1,$message,$header)
  25. or die('Nie udało się wysłać wiadomości');
  26. }
  27.  
  28. }
  29.  
  30.  
  31. }


Ten post edytował Norbit_24 7.02.2010, 16:25:24
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


jakoś dziwnie to zrobiłeś bez sensu to pierwsze połączenie do bazy, powinieneś pobrać emaile z bazy i wtedy zrobić pętle, że dla każdego adresu e-mail wyślij wiadomość
Go to the top of the page
+Quote Post
Norbit_24
post
Post #5





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

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


Teraz już się całkiem pogubiłem (zaczynam dopiero z php)
Mógłbys ten skrypt przerobic tak, żeby wysyłał maile partami po 100maili ?
Nie chcę wysyłać każdego osobno, bo dużo czasu to zajmie czy np. 2000 maili.

Będę wdzięczny za pomoc..
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


  1.  
  2. $temat1 = "$_POST[temat]";
  3. $message = "$_POST[tresc]\r\n";
  4. $header = 'MIME-Version: 1.0' . "\r\n";
  5. $header .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  6. $header .= 'From: xxx.pl <info@xxx.pl>'."\r\n";
  7.  
  8. $sql = "SELECT email FROM users";
  9. if(!$result = mysql_query($sql))
  10. {
  11. echo "nie udało się pobrać wynikow";
  12. } else
  13. {
  14. while($row = mysql_fetch_array($result))
  15. {
  16. mail($row['email'],$temat1,$message,$header) or die('Nie udało się wysłać wiadomości');
  17. }
  18. }


a po co wysyłać partiami?
Go to the top of the page
+Quote Post
Norbit_24
post
Post #7





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

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


tak właśnie zrobiłem na początku, jednak wywala mi błąd: przy 2000 mailach, pzy 20 jest ok

Błąd:
Cytat
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@xxx.pl and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.


Serwer ma blokadę, albo nie wyrabia.. I wtedy nie wysyła, żadnego maila.
Dlatego chciałem wysłac to partami po 100 maili
Proszę o takie rozwiązanie..

Ten post edytował Norbit_24 7.02.2010, 16:46:11
Go to the top of the page
+Quote Post
tehaha
post
Post #8





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


a spróbuj jeszcze u góry dorzucić


Partiami masz na myśli żeby wysłał 100 potem chwila przerwy i tak w kółko tak?
Go to the top of the page
+Quote Post
Norbit_24
post
Post #9





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

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


Chcę, aby wysyłał partiami po 100 maili.
Czyli 1 partia od 0-100, druga partia: 101-200, trzecia partia: 201-300 itd aż do np. 2000
Go to the top of the page
+Quote Post
tehaha
post
Post #10





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


  1. if(isset($_GET['mail'])=='wyslij')
  2. {
  3.  
  4. $temat1 = "$_POST[temat]";
  5. $message = "$_POST[tresc]\r\n";
  6. $header = 'MIME-Version: 1.0' . "\r\n";
  7. $header .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  8. $header .= 'From: xxx.pl <info@xxx.pl>'."\r\n";
  9.  
  10. $sql = "SELECT email FROM users";
  11. if(!$result = mysql_query($sql))
  12. {
  13. echo "nie udało się pobrać wynikow";
  14. } else
  15. {
  16. $i = 0;
  17. while($row = mysql_fetch_array($result))
  18. {
  19. mail($row['email'],$temat1,$message,$header) or die('Nie udało się wysłać wiadomości');
  20.  
  21. if(is_int($i/100))
  22. {
  23. sleep(1);
  24. }
  25. ++$i;
  26. }
  27. }
  28.  
  29. }
Go to the top of the page
+Quote Post
Norbit_24
post
Post #11





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

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


Przy 20 mailach działa..
Zobaczę jak będzie przy większej ilości.

Dziękuje za pomoc.
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 Aktualny czas: 19.08.2025 - 17:44