Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyświetlenie rezultatu w petli po kazdym przebiegu
Forum PHP.pl > Forum > Przedszkole
Ryder
Witam,

Zrobiłem prosty skrypt do wysyłki maili.
Załóżmy, że chciałbym wysłać ok. 100 - 200 maili w ramach jednej paczki.


  1. for($i=0;$i<100;$i++)
  2. {
  3. // wyslanie maila phpmailer
  4. .....
  5. // wyświetlenie rezultatu
  6. echo "<br />Wysłano dla - $i";
  7.  
  8. usleep(500000); // 0.5s
  9. }


Po każdym wysłanym mailu dodałem funkcje unsleep na 0,5s.
Aktualnie działa to w ten sposób ze skrypt wykonuje wysyłke 100maili i wyświetla rezultat na raz po ok 1min.
W jaki sposób wyświetlić po każdym mailu na ekranie komunikat z rezultatem. (Ajax ?), a nie po wykonaniu całego skryptu.


timon27
Możesz przerzucić oczekiwanie na java script:
  1. for(var i=0;i<100;i++){
  2. settimeout("ajax('skrypt.php?i='"+i+")",i*30*1000);
  3. }

Funkcja ajax powinna wywoływać adres, a rezultat wyświetlać gdzieś na stronie.
a w pliku php zrobić wysłać tylko jeden mail dla $i=$_GET['i'];
Ryder
Dzięki,

Sprawdzę.
Znalazłem jeszcze działajace rozwiązanie z ob_flush

header ('Content-type: text/html; charset=utf-8');
Ale bez ob_start(); na poczatku strony

  1. for($i=0;$i<100;$i++)
  2. {
  3. // wyslanie maila phpmailer
  4. .....
  5. // wyświetlenie rezultatu
  6. echo "<br />Wysłano dla - $i";
  7.  
  8. flush();
  9.  
  10. usleep(500000); // 0.5s
  11. }
tzm
Takie rzeczy się ajaxem robi a nie ob_flushem... ewentualnie poczytaj sobie co to jest JSONP
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.