Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> HTTP Error 500: Internal Server Error przy wysyłce masowej (newsletter)
in5ane
post 28.05.2013, 17:30:34
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Cześć, dostałem błąd: "HTTP Error 500: Internal Server Error" przy masowej wysyłce e-maili (newsletter). Skrypt wykonywał się w miarę długo, ja wiem z 5 minut czy coś. Ogólnie mam około 300 e-maili. Nie mam pojęcia czy wszystkie poszły, czy nie. Moje pytanie brzmi, czym to może być spowodowane. Poniżej skrypt (wraz z konfiguracją), który rozsyła e-maile. Ponadto dodam, że mam serwer typu VPS z cPanelem.

  1. require_once('../class.phpmailer.php');
  2. $mail = new PHPMailer(true);
  3. $mail->IsSMTP();
  4. $mail->SMTPAuth = true;
  5. $mail->SMTPSecure = "ssl";
  6. $mail->Host = $host;
  7. $mail->Port = $port;
  8. $mail->Username = $login;
  9. $mail->Password = $password;
  10. $mail->CharSet = "UTF-8";
  11. $mail->From = $email;
  12. $mail->FromName = "Nazwa... bla bla bla...";
  13. $mail->Subject = $_POST['title'];
  14. $mail->MsgHTML($_POST['content']);
  15. $query = mysql_query("SELECT email FROM emails;");
  16. while ($row = mysql_fetch_array($query)) {
  17. $mail->AddAddress($row['email']);
  18. $mail->Send();
  19. $mail->ClearAddresses();
  20. sleep(1);
  21. }


P. S.: Wiem, że skrypt ogólnie dobrze rozsyła, bo do mnie e-mail doszedł.

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


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
timon27
post 28.05.2013, 19:03:48
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


sleep(1);

Masz problemy z tym, że skrypt działa za długo, a sztucznie mu wydłużasz czas o 300 sekund?
Abstrahując od tego że niepotrzebnie wysyłasz 300 maili zamiast jednego.

Ten post edytował timon27 28.05.2013, 19:04:25
Go to the top of the page
+Quote Post
jackraymund
post 28.05.2013, 19:04:27
Post #3





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

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


daj na początku


--------------------
Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
Go to the top of the page
+Quote Post
timon27
post 28.05.2013, 19:10:24
Post #4





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Cytat(jackraymund @ 28.05.2013, 20:04:27 ) *
daj na początku


Tylko po co, skoro nie musi się to wykonywać 5 minut tylko 1 sekundę?
Go to the top of the page
+Quote Post
in5ane
post 28.05.2013, 19:55:44
Post #5





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Panowie, nadal ostatecznie nie wiem, co mam zrobić. Więc wywalić ten sleep(1); i co z tym set_time_limit? A co ma znaczyć zdanie "300 maili zamiast jednego"?


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
timon27
post 28.05.2013, 20:08:44
Post #6





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Tak, sleep jest całkowicie zbędny.

Cytat(in5ane @ 28.05.2013, 20:55:44 ) *
A co ma znaczyć zdanie "300 maili zamiast jednego"?


Zamiast wysyłać 300 maili wysyłasz jednego. Co w tym niezrozumiałego?
Masz kod dla jasności.
Zamiast:
  1. while ($row = mysql_fetch_array($query)) {
  2. $mail->AddAddress($row['email']);
  3. $mail->Send();
  4. $mail->ClearAddresses();
  5. }

dajesz:
  1. while ($row = mysql_fetch_array($query)) {
  2. $mail->AddBCC($row['email']);
  3. }
  4. $mail->Send();
  5. $mail->ClearAddresses();
  6.  
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: 13.06.2025 - 00:00