Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt się długo wykonuje - jak wyświetlać postęp?, Czy da się wyświetlać w przeglądarce postęp np w %
orafal
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
MaximusDM
post
Post #2





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 14.04.2005

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


hmm w zależności od bazy można ułożyć odpowiedniego selecta, ale to samo osiągniesz odpalając np. zabę - toad
Go to the top of the page
+Quote Post
misiek172
post
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.
Go to the top of the page
+Quote Post
LBO
post
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)
Go to the top of the page
+Quote Post
templar
post
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.
Go to the top of the page
+Quote Post
LBO
post
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
Go to the top of the page
+Quote Post
matix
post
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:

  1. <div class="progress"></div>


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
Go to the top of the page
+Quote Post
orafal
post
Post #8





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.10.2007

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


Cytat(LBO @ 16.10.2007, 20:08:36 ) *
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) .
Go to the top of the page
+Quote Post
michu2510
post
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.
Go to the top of the page
+Quote Post
k1ller
post
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.');
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.09.2025 - 01:31