Ostatnio do naszego CMS-a pisałem nowy moduł biuletynu internetowego. Prosty newsletter, a jednak wymaga sporo pracy i jak się domyślam to jeszcze nie koniec, pomimo pomyślnych pierwszych testów.
Do wysłania maili ściągniętych z bazy użyłem pętli while. Początek wyglądał tak, że jeśli mail się wysłał, to użytkownik biuletynu otrzymywał komunikat, że wiadomość została prawidłowo wysłana pod adres: xxx@domena.pl. Jak maili było w bazie 1000, to użytkownik otrzymywał 1000 takich komunikatów, co uznałem za niepotrzebne. Wymyśliłem więc, że chce aby użytkownik widział pasek postępu. Zaczęły się więc poszukiwania u wujka googla, jak by można by to rozwiązać. Powiem szczerze, że poszukiwania nie były łatwe. Owszem rozwiązań z jquery, czy ajaxem jest wiele, ale większość tyczy się np. z uploadowaniem plików, a my przecież chcemy aby postęp był liczony w miarę wykonania pętli FOR, czy WHILE.
Po kilkugodzinnych poszukiwaniach znalazłem. Z pomocą przyszedł blog SPidgorny. Rozwiązanie proste i jakże bardzo funkcjonalne:
<?php
require_once 'class.ProgressBar.php';
echo 'Starting…<br />';
$p = new ProgressBar();
echo '<div style="width: 300px;">';
$p->render();
echo '</div>';
for ($i = 0; $i < ($size = 100); $i++) {
$p->setProgressBarProgress($i*100/$size);
usleep(1000000*0.1);
}
$p->setProgressBarProgress(100);
echo 'Done.<br />';
?>




Staryyy to jest zajebiste! Szukałem tego w necie od tygodni, spać nie mogłem i pewnego dnia znalazłem to u ciebie. Wielkie dzięki!