Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Osobny wątek mailowy
armon
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 24.09.2009

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


Witam,

Czy da się zrobić tak, aby osoba wizytująca stronę nie musiała oczekiwać na zakończenie wysyłanie maila przez skrypt php?

Chodzi oto, aby wysłać maila w osobnym wątku np. powiadamiającego o błędzie na stronie albo też gdy klient złoży zamówienie to żeby nie musiał oczekiwać aż się maile powiadamiające powysyłają.

Na jakie metody w php manual powinienem zwrócić uwagę, aby to uzyskać? Znacie jakiś tutek odnośnie tego tematu?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
MGraphics
post
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 2
Dołączył: 2.03.2012
Skąd: Częstochowa

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


Zawsze, można zapisywać maila do jakiejś tablicy i pózniej cornem niezależnie sobie to przesyłać.
Go to the top of the page
+Quote Post
armon
post
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 24.09.2009

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


Można dać rozkaz do Crona z poziomu PHP?
Go to the top of the page
+Quote Post
MGraphics
post
Post #4





Grupa: Zarejestrowani
Postów: 29
Pomógł: 2
Dołączył: 2.03.2012
Skąd: Częstochowa

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


Corn to usługa serwera on porusza jakis skrypt.

Czyli np co 10 min wysyła maile jeżeli 3 uzytkowników akurat chciało wysłać w tym czasie sobie maila to kazdy otrzyma go za ileś tam minut.
Go to the top of the page
+Quote Post
armon
post
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 24.09.2009

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


W sytuacji wysyłania błędów jest to dobre rozwiązanie, ale w sytuacji zamówienia jest bardzo złe. Mail ma zostać wysłany praktycznie natychmiast. Więc ma ktoś inny pomysł?
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Masz jakieś rzeczywiste opóźnienia związane z wysłaniem pojedynczego maila do użytkownika w momencie złożenia zamówienia? To dosyć dziwna sytuacja. Wysłanie takiego maila powinno być praktycznie nieodczuwalne dla samego PHP. Sam serwer SMTP mógłby z jakiś tam powodów wstrzymać wysłanie wiadomości, ale to nie powinno blokować dalszego wykonywania skryptu. Mógłbyś opisać konfigurację serwera HTTP / SMTP?

Jeżeli jednak problem rzeczywiście istnieje to można go dosyć prosto rozwiązać. Daemon w PHP, który odczytuje z jakiejś bazy danych maile do wysłania i wysyła je. Mógłby to robić w właściwie dowolnych cyklach czasowych, np. co 5-20 sekund. Cron mógłby tu zostać użyty co najwyżej do wznawiania działania daemona, gdyby z jakiegoś powodu przestał działać (np. jakiś błąd albo restart serwera).

Ten post edytował Crozin 6.03.2012, 13:26:04
Go to the top of the page
+Quote Post
armon
post
Post #7





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 24.09.2009

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


No jeden mail to nie problem.

Ale wysyłane są 3-4. Jeden informujący klienta, jeden informujący właściciela i tak dalej...

No i wtedy czas oczekiwania to ok. 3-4 s przez co czasem niecierpliwi klikają co popadnie, bo myślą, że im się przeglądarka zawiesiła ^^

Zapytanie jest AJAXowe, i potrzebuje informacji z pliku PHP, więc nie może być asynchroniczne ;/

Go to the top of the page
+Quote Post
Crozin
post
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Wysłanie trzech czy czterech maili również nie powinno mieć specjalnego odbicia w czasie wykonywania skryptu, mógłbyś przedstawić pełną konfigurację swojego skryptu?
Go to the top of the page
+Quote Post
armon
post
Post #9





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 24.09.2009

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


Wysyłam z pomocą PHPMailera łącząc się z kontem google. SMTPKeepAlive jest ustawiony na true.

Nie da się zrobić tak, że jeden skrypt .php uruchamia inny skrypt .php, nie czekając na wykonanie tego drugiego? Takie rozwiązanie byłoby najlepsze.
Go to the top of the page
+Quote Post
mls
post
Post #10





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Na unixowym systemie bez problemu:
  1. exec('/sciezka/do/php skrypt.php &');


Ten post edytował mls 6.03.2012, 14:17:08


--------------------
Go to the top of the page
+Quote Post
Crozin
post
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Mógłbyś przy pomocy profilera sprawdzić co tak na prawdę zajmuje tak dużo czasu - wtedy byłoby znacznie łatwiej znaleźć rozwiązanie.
2. Oczywiście, że można. Podałem już rozwiązanie z drugim skryptem działającym jako daemon w systemie.

@mls: Tak długo jak to możliwe nie powinno się korzystać ze specyficznych dla systemu elementów. wink.gif
Go to the top of the page
+Quote Post
MOCNY
post
Post #12





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 8.05.2013

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


Witam,
To mój pierwszy post, więc witam wszystkich serdecznie! smile.gif
Mam podobny problem, mianowicie nie wysyłają mi się maile, jeśli puszczę coś w 'tle'.

Cytat(mls @ 6.03.2012, 15:17:00 ) *
Na unixowym systemie bez problemu:
  1. exec('/sciezka/do/php skrypt.php &');


Właśnie tej funkcji używam, cały skrypt poza wysłaniem maila się wykonuje (odpisywanie danych do bazy itd...).
Problemu nie ma, jeśli skrypt odpalę w przeglądarce, w tedy maile dochodzą. Ale takie odpalenie skryptu jest dość nie wygodne, ponieważ liczy on się w zależności od 'kodu raportu', czyli może się liczyć nawet godzinę...

Ktoś miał podobny problem z wysyłaniem maila poprzez odpalenie skryptu poprzez 'exec'?
Go to the top of the page
+Quote Post
!*!
post
Post #13





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


To wpisz w konsoli:
Cytat
php plikZkodemExec.php &


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
MOCNY
post
Post #14





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 8.05.2013

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


Cytat(!*! @ 8.05.2013, 19:03:05 ) *
To wpisz w konsoli:


Nie mam niestety dostępu do konsoli ;/
Ogólnie sporo mam skryptów które się odpalają w innym wątku i się przeliczają w tle, ten też działa, dochodzi do końca, ale maila nie wysyła, no chyba że się odpali go w przeglądarce.

A zapomniałem dodać, że jak odpalam skrypt normalnie w przeglądarce, to rzyga mi takkim komunikatem:

Kod
Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/html/shd/class.phpmailer.php on line 1218 Warning: fread(): Length parameter must be greater than 0 in /var/www/html/shd/class.phpmailer.php on line 1219 Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/html/shd/class.phpmailer.php on line 1222 Deprecated: Function eregi() is deprecated in /var/www/html/shd/class.phpmailer.php on line 592 Message has been sent


No ale mail jest wysyłany...

Oj chyba będzie z tym ciężko, popytam na jakichś zagranicznych forach, może pomogą smile.gif
Jak się uda, to dam znać.

Zauważyłem, że odpalając procedurę w tle, zwraca następujący błąd:

Kod
Error: The following SMTP Error: Data not accepted.adres@mail.com


Odświeżę temat, do tej pory nie znalazłem rozwiązania.
Mam następujący log, może ktoś będzie wiedział w czym problem.

Kod
> SMTP -> get_lines(): $data was ""
> SMTP -> get_lines(): $str is "220 mx1.cyfrowypolsat.pl ESMTP Cyfrowy Polsat S.A.
> "
> SMTP -> get_lines(): $data is "220 mx1.cyfrowypolsat.pl ESMTP Cyfrowy Polsat S.A.
> "
> SMTP -> FROM SERVER:
> 220 mx1.cyfrowypolsat.pl ESMTP Cyfrowy Polsat S.A.
> SMTP -> get_lines(): $data was ""
> SMTP -> get_lines(): $str is "250-mx1.cyfrowypolsat.pl
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> "
> SMTP -> get_lines(): $data was "250-mx1.cyfrowypolsat.pl
> "
> SMTP -> get_lines(): $str is "250-PIPELINING
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> "
> SMTP -> get_lines(): $data was "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> "
> SMTP -> get_lines(): $str is "250-SIZE 104857600
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> "
> SMTP -> get_lines(): $data was "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> "
> SMTP -> get_lines(): $str is "250-ETRN
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> "
> SMTP -> get_lines(): $data was "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> "
> SMTP -> get_lines(): $str is "250-STARTTLS
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> "
> SMTP -> get_lines(): $data was "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> "
> SMTP -> get_lines(): $str is "250-AUTH PLAIN CRAM-MD5 LOGIN
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> "
> SMTP -> get_lines(): $data was "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> "
> SMTP -> get_lines(): $str is "250-AUTH=PLAIN CRAM-MD5 LOGIN
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> 250-AUTH=PLAIN CRAM-MD5 LOGIN
> "
> SMTP -> get_lines(): $data was "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> 250-AUTH=PLAIN CRAM-MD5 LOGIN
> "
> SMTP -> get_lines(): $str is "250-ENHANCEDSTATUSCODES
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> 250-AUTH=PLAIN CRAM-MD5 LOGIN
> 250-ENHANCEDSTATUSCODES
> "
> SMTP -> get_lines(): $data was "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> 250-AUTH=PLAIN CRAM-MD5 LOGIN
> 250-ENHANCEDSTATUSCODES
> "
> SMTP -> get_lines(): $str is "250-8BITMIME
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> 250-AUTH=PLAIN CRAM-MD5 LOGIN
> 250-ENHANCEDSTATUSCODES
> 250-8BITMIME
> "
> SMTP -> get_lines(): $data was "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> 250-AUTH=PLAIN CRAM-MD5 LOGIN
> 250-ENHANCEDSTATUSCODES
> 250-8BITMIME
> "
> SMTP -> get_lines(): $str is "250 DSN
> "
> SMTP -> get_lines(): $data is "250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> 250-AUTH=PLAIN CRAM-MD5 LOGIN
> 250-ENHANCEDSTATUSCODES
> 250-8BITMIME
> 250 DSN
> "
> SMTP -> FROM SERVER:
> 250-mx1.cyfrowypolsat.pl
> 250-PIPELINING
> 250-SIZE 104857600
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN CRAM-MD5 LOGIN
> 250-AUTH=PLAIN CRAM-MD5 LOGIN
> 250-ENHANCEDSTATUSCODES
> 250-8BITMIME
> 250 DSN
> SMTP -> get_lines(): $data was ""
> SMTP -> get_lines(): $str is "334 VXNlcm5hbWU6
> "
> SMTP -> get_lines(): $data is "334 VXNlcm5hbWU6
> "
> SMTP -> get_lines(): $data was ""
> SMTP -> get_lines(): $str is "334 UGFzc3dvcmQ6
> "
> SMTP -> get_lines(): $data is "334 UGFzc3dvcmQ6
> "
> SMTP -> get_lines(): $data was ""
> SMTP -> get_lines(): $str is "235 2.7.0 Authentication successful
> "
> SMTP -> get_lines(): $data is "235 2.7.0 Authentication successful
> "
> SMTP -> get_lines(): $data was ""
> SMTP -> get_lines(): $str is "250 2.1.0 Ok
> "
> SMTP -> get_lines(): $data is "250 2.1.0 Ok
> "
> SMTP -> FROM SERVER:
> 250 2.1.0 Ok
> SMTP -> get_lines(): $data was ""
> SMTP -> get_lines(): $str is "554 5.7.1 : Helo command rejected: HELO lies, you are not localhost.localdomain
> "
> SMTP -> get_lines(): $data is "554 5.7.1 : Helo command rejected: HELO lies, you are not localhost.localdomain
> "
> SMTP -> FROM SERVER:
> 554 5.7.1 : Helo command rejected: HELO lies, you are not localhost.localdomain
> SMTP -> ERROR: RCPT not accepted from server: 554 5.7.1 : Helo command rejected: HELO lies, you are not localhost.localdomain
>
> SMTP -> get_lines(): $data was ""
> SMTP -> get_lines(): $str is "554 5.7.1 : Helo command rejected: HELO lies, you are not localhost.localdomain
> "
> SMTP -> get_lines(): $data is "554 5.7.1 : Helo command rejected: HELO lies, you are not localhost.localdomain
> "
> SMTP -> FROM SERVER:
> 554 5.7.1 : Helo command rejected: HELO lies, you are not localhost.localdomain
> SMTP -> ERROR: RCPT not accepted from server: 554 5.7.1 : Helo command rejected: HELO lies, you are not localhost.localdomain
>
> SMTP -> get_lines(): $data was ""
> SMTP -> get_lines(): $str is "250 2.0.0 Ok
> "
> SMTP -> get_lines(): $data is "250 2.0.0 Ok
> "
> SMTP -> FROM SERVER:
> 250 2.0.0 Ok
> Message could not be sent.
Mailer Error: SMTP Error: The following recipients failed
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: 20.08.2025 - 02:37