![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 15.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam długo wykonujący się skrypt, który działa w oparciu o pewną pętlę. Jak można wyświetlać w przeglądarce postęp w tej pętli - na przykład procentowo, tak aby użytkownik wiedział, że przeglądarka się nie zawiesiła.
Dzięki i pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.04.2005 Ostrzeżenie: (10%) ![]() ![]() |
hmm w zależności od bazy można ułożyć odpowiedniego selecta, ale to samo osiągniesz odpalając np. zabę - toad
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
na łatwizne idąć można zrobić animowanego GIFa, jesli się zatnie to przestanie się kręcić ;P.
Jeśli chciałbyś mieć ilość / 100% to juz nie takie proste, ponieważ jezeli masz pętle, która nie wiadomo kiedy się kończy no to wtedy nie da się przewidzieć końca, no bo jak? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ewentualnie obliczyć średni czas ładowania i według niego liczyć postęp. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie można, PHP nie działa w ten sposób - każda informacja wysłana do przeglądarki jest automatycznie dodawana do Tych wysłanych wcześniej, co skutecznie uniemożliwia zbudowanie wszelkiego rodzaju pasków postępu.
Za to chyba w Perlu się da (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 13.09.2006 Skąd: Poland Ostrzeżenie: (0%) ![]() ![]() |
Kiedyś byłem niestety zmuszony do zrealizowania czegoś takiego.
Upierałem się, wmawiając pracodawcy, że nie dam rady - ale miałem to zrealizować i koniec. Co więc uczyniłem: Utworzyłem 2 ramki, bez borderu, w górnej znajdował się animowany GIF odpalany od razu przy załadowaniu, ale jego wyświetlanie znajdowało się w pętli while, która za każdym razem sprawdzała zawartość pliku tekstowego, czy jest w nim jeszcze "0", czy już "1". Po sprawdzeniu tego warunku, jeśli było "0", to <meta refreshem> odświeżałem górną ramkę w intervalu 1-2 sekundy. W dolnej ramce na starcie skryptu zapodałem ładnie set_time_limit(), później zapis "0" do tego pliku tekstowego, po czym zapis "1" - zaraz po pętli/operacjach obliczeniowych. W tym momencie pętla w górnej ramce odczytała tę "1", zaprzestała wyświetlania GIFa, i wyświetliła informację, że skrypt zakończył swoje działanie. Pozdrawiam. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
To ja gratuluję samozaparcia i pomysłowości.
Ale nadal nie widzę sensu robienia czegoś w technologii do tego nie przystosowanej. edit: I te cykanie w czasie odświeżania w IE, bleh Ten post edytował LBO 16.10.2007, 23:23:35 |
|
|
![]() ![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Weź skorzystaj z funkcji flush(). Dzięki niej możesz zrobić taki prosty postępowy progressbar. Za każdym wykonaniem pętli, niech doda jedno:
Załóżmy. Jeśli wykona ich dzisięć to wtedy jest koniec. Wiadomo. A jak to policzyć to już zwykła matma. To takie luźne przemyślenie z rana przed szkołą, więc mogę tu coś pomylić, za to przepraszam (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Pozdro (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował matix 17.10.2007, 07:10:29 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 15.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie można, PHP nie działa w ten sposób - każda informacja wysłana do przeglądarki jest automatycznie dodawana do Tych wysłanych wcześniej, co skutecznie uniemożliwia zbudowanie wszelkiego rodzaju pasków postępu. Za to chyba w Perlu się da (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) To byłoby też rozwiązanie. Więc jak zrobić, żeby po każdym kroku tej pętli "for" dopisać do już istniejącej treści, że praca posunęła się do przodu i natychmiast wyświetlić to w przeglądarce? Ta pętla nie ma wielu powtórzeń, więc nie zrobi mi się strona długa jak papier toaletowy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 11.10.2007 Skąd: http://localhost/ Ostrzeżenie: (0%) ![]() ![]() |
A ja przy okazji się zapytam jak zrobić taki pasek jak na o2 w poczcie jest przy uploadzie.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 20.02.2007 Skąd: Wroclaw Ostrzeżenie: (0%) ![]() ![]() |
robisz sobie taka funkcje w PHP:
function UpdateDiv($mess) { echo '<script type="text/javascript">'; echo 'Update_cue_info(\''.addslashes($mess).'\');'; echo '</script>'; flush(); } do tego na stronie musisz miec ten skrypcik: function Update_cue_info(mess) { var update_info_el = document.getElementById('nazwa_twojego_diva_do_podmianek'); update_info_el.innerHTML = mess; } </script> no i oczywiscie sam div gdzies na stronie: <div id="nazwa_twojego_diva_do_podmianek">PLaduje...</div> Jezeli nie mozesz wyliczyc procentowo postepu, to przynajmniej mozesz wyswietlac informacje co skrypt robi, np w jakim momencie sie znajduje albo cokolwiek. Robisz to odpalajac w php UpdateDiv('Teraz cos robie.'); |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 01:31 |