Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wysyłanie dużej liczby emaili
yalus
post
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


Witam,

Przejrzałem forum i wiem, że temat już był wałkowany ale nigdzie nie mogłem znaleźć przykładowego skryptu wysyłającego emaile,
bo chciałbym go porównać z moim i dowiedzieć się czy mój jako tako nadaje się do tego zadania.

Otóż mój skrypt do wysyłania wygląda tak:
napisałem go po swojemu - skrypt wysyłać wysyła mejle, ale do końca nie wiem czy tak to się robi, mam na myśli pobieranie adresów email z bazy i wysyłanie wiadomości w pętli 'while' questionmark.gif
skrypt uruchamiany jest cronem co 10min i wysyła 100 mejli jednorazowo, w bazie znajduje się 1000 mejli, czyli w ciągu 100minut powinien wysłać wszyskie, ale czasami dostaje wiadomosc raport z wykonania harmongramu: " UWAGA! Wykonywanie komendy zostało zatrzymane z powodu przekroczenia limitu czasowego!"

bardzo proszę o sugestie, uwagi





  1. <?php
  2. $er = error_reporting(0);
  3. include('Mail.php');
  4. include('Mail/mime.php');
  5.  
  6. $sql = "select login, id, email from users where wyslane = '' limit 100";
  7. $result = mysql_query($sql);
  8.  
  9. while ($row = mysql_fetch_array($result))
  10. {
  11. $user = $row['login'];
  12. $emal = $row['email'];
  13. $id_eml = $row['id'];
  14. if (validate_email($emal) == true)
  15. {
  16. $text = "Tresc wiadomosci";
  17. $subject = "Temat wiadomosci";
  18. $from = "Kontakt<kontakt@jakas_domena.pl>";
  19. $to = $emal;
  20.  
  21. $message = new Mail_mime();
  22. $message->setHTMLBody($text);
  23. $message->setTXTBody($text);
  24.  
  25. $mimeparams = array("text_encoding" => "8bit",
  26. "text_charset" => "utf-8",
  27. "html_charset" => "utf-8",
  28. "head_charset" => "utf-8");
  29.  
  30. $body = $message->get($mimeparams);
  31.  
  32. $extraheaders = array("From" => $from,
  33. "To" => $to,
  34. "Subject" => $subject,
  35. "Reply-To" => $visitor_email);
  36.  
  37. $headers = $message->headers($extraheaders);
  38.  
  39. $smtp =& Mail::factory('smtp',
  40. array ('host' => "jakis_host.pl",
  41. 'auth' => true,
  42. 'username' => "username",
  43. 'password' => "password"));
  44.  
  45. $mail = $smtp->send($to, $headers, $body);
  46.  
  47. if (PEAR::isError($mail)) {
  48. $sql1 = "update users set wyslane = 'e' where id = '$id_eml' limit 1";
  49. $result1 = mysql_query($sql1);
  50. }
  51. else
  52. {
  53. $sql1 = "update users set wyslane = '1' where id = '$id_eml' limit 1";
  54. $result1 = mysql_query($sql1);
  55. }
  56. }
  57. else
  58. {
  59. $sql1 = "update users set wyslane = '0' where id = '$id_eml' limit 1";
  60. $result1 = mysql_query($sql1);
  61. }
  62.  
  63. }
  64.  
  65. ?>


Ten post edytował yalus 4.02.2013, 14:56:32


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Zwiększ time limit lub zmniejsz jednorazową paczkę.


--------------------
Go to the top of the page
+Quote Post
yalus
post
Post #3





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


dzieki za odpowiedz,


masz na myśli zwiekszenie czasu wykonania skryptu?
czy odstepy miedzy odpalaniem crona? (te 10min)


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
markonix
post
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Skoro skrypt wywala się przez przekroczenie czasu to logicznym jest jego zwiększenie.

http://php.net/manual/en/function.set-time-limit.php

W dużej mierze i tak to nie działa (ustawienie odgórne) dlatego zaproponowałem kolejne rozwiązanie - zmianę 100 maili w mniejszą paczkę.
Ja bym zmniejszył liczbę maili ale ustawił częściej crona - każde wywołanie działa oddzielnie.


--------------------
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: 22.08.2025 - 11:33