Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyświetlanie komunikatów, przed zakończeniem skryptu
atomik
post 7.09.2005, 15:34:40
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.09.2005
Skąd: Poznań

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


Witam..

Z góry przepraszam za być może trywialne pytanie blink.gif ale nigdzie nie potrafię znaleźć na nie odpowiedzi.

Temat wydaje sie prosty i być może taki jest sadsmiley02.gif .

Często zachodzą przypadki, że skrypt przykładowo długo przeszukuje bazę i wtedy na ekranie, po wybraniu jakiejś opcji, nic się nie pojawia przez dłuższy czas.
Chciałbym mieć możliwość wyświetlenia w tym czasie jakiegoś ekranu w stylu: "Proszę czekać". Kłopot w tym, że przeglądarka wyświetli taką stronę dopiero po zakończeniu całego skryptu (po zakończeniu szukania).

Drugi, podobny przypadek, to wyświetlanie na bieżąco kolejnych informacji o postępie w działaniu skryptu, np: "Etap1, Etap2..". Normalnie, takie komunikaty wysyłane przez echo, będą wyświetlone dopiero po zakończeniu skryptu. Co zrobić, żeby były wyświetlane na bieżąco?

Z góry dziękuję za porady rolleyes.gif

pozdrowienia, Tomek
Go to the top of the page
+Quote Post
luinnar
post 7.09.2005, 17:10:13
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 15.07.2004
Skąd: Bielsko-Biała

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


co do wyświetlania "proszę czekać" to używa się do tego java scriptu a nie php.

2 pytanie:
myśle że wystarczy flush:
  1. <?php
  2. echo 'faza 1';
  3. // jakieś operacje 1 fazy
  4.  
  5. echo 'faza2'
  6. // jakieś operacje 2 fazy
  7. ?>


--------------------
notDevBlog - devblog.luinnar.com
Go to the top of the page
+Quote Post
atomik
post 8.09.2005, 13:07:09
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.09.2005
Skąd: Poznań

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


Dzięki za podpowiedź ale niestety flush() nie działa sadsmiley02.gif


--------------------
pozdrowienia, Tomek
-------------------------
Ci, którzy umieją - robią, ci którzy nie umieją - uczą.
Go to the top of the page
+Quote Post
FiDO
post 14.09.2005, 01:08:05
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


To jest sprawa zalezna czesciowo od przegladarki. Np. taki IE sobie buforuje sam i dopoki nie dostanie pewne ilosci znakow to nie wyswietli niczego, nie wyswietli tez niedokonczonej tabelki (chyba, ze dzialanie skryptu zostanie przerwane i nic juz wiecej nie dostanie). Pod FF o ile pamietam nie ma domyslnie buforowania, wiec mozna sobie wyswietlac php'owy pasek postepu (bo zapewne o cos takiego Ci chodzi) bez problemu. Nie wiem jak z Opera. Co do wielkosci bufora w IE to musisz sobie sam do tego dojsc, ja juz nie pamietam tej wartosci, ale z tego co kojarze moglo to byc 256 albo 512. Wiec na poczatku skryptu musisz wyslac do przegladarki jakies nieznaczace znaki (np. spacje) w tej ilosci, a dopiero potem zawartosc wlasciwa, ktora ma byc wyswietlana stopniowo. Dodatkowo po kazdym kroku w php, ktory powoduje jakies wyswietlenie danych powinienes wywolac funkcje flush" title="Zobacz w manualu php" target="_manual (w komentarzach do tej funkcji tez ma co nieco opisane, poczytasz i bedziesz wszystko wiedzial).

A swoja droga to, ze nikt nie odpowiedzial na Twoj temat nie oznacza jeszcze, ze mozesz sobie zakladac drugi traktujacy o tym samym. Radze dokladniej przestudiowac regulamin, na ktory sie zgodziles smile.gif Narazie pierwsze upomnienie..


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
atomik
post 14.09.2005, 02:26:26
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.09.2005
Skąd: Poznań

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


Dzięki za odpowiedź ale to wszystko co piszesz już sprawdziłem i IE nie reaguje wyrzuceniem bufora na wysłanie nawet ponad 1024 spacji sad.gif

A co do upomnienia...

1. Nie napisalem drugiego posta tak sobie bo mi się nie chcialo czekać (kilka dni bez efektu minęło)

2. Gdyby forum dopuszczało dodanie kolejnej odpowiedzi po mojej ostatniej to bym to zrobił bo tak zacząłem... niestety ta możliwość (dwa posty pod rząd) jest zablokowana sad.gif (może warto by było to odblokować?)

3. W związku z powyższym nie miałem innego wyjścia chcąc uzyskać możliwość zadania jakiegokolwiek kolejnego pytania (może sie mylę to mnie popraw)

4. Coś za szybko ci idzie z tymi upomnieniami... a jak dostanę drugą żółtą kartkę to mnie wywalisz czy pójdę na ławkę rezerwowych aarambo.gif ?


--------------------
pozdrowienia, Tomek
-------------------------
Ci, którzy umieją - robią, ci którzy nie umieją - uczą.
Go to the top of the page
+Quote Post
FiDO
post 14.09.2005, 03:01:58
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Cytat
Dzięki za odpowiedź ale to wszystko co piszesz już sprawdziłem i IE nie reaguje wyrzuceniem bufora na wysłanie nawet ponad 1024 spacji sad.gif

Sprobuj 4096 i poczytaj komentarze do funkcji flush na php.net. Wynika z nich, ze potrzeba wlasnie 4096 znakow. Jest tam zaprezentowanych tez kilka sposobow na zrobienie tego co chcesz.

Cytat
1. Nie napisalem drugiego posta tak sobie bo mi się nie chcialo czekać (kilka dni bez efektu minęło)

2. Gdyby forum dopuszczało dodanie kolejnej odpowiedzi po mojej ostatniej to bym to zrobił bo tak zacząłem... niestety ta możliwość (dwa posty pod rząd) jest zablokowana sad.gif (może warto by było to odblokować?)

3. W związku z powyższym nie miałem innego wyjścia chcąc uzyskać możliwość zadania jakiegokolwiek kolejnego pytania (może sie mylę to mnie popraw)

http://forum.php.pl/index.php?act=Regulamin#IV.2 smile.gif

Fakt, postow pod soba pisac nie mozna, ale mozna zastosowac trik.. jesli Twoj post jest ostatni to mozna go usunac i wtedy odpowiedziec (wklejajac ewentualnie zawartosc tego usuwanego posta na poczatku)

Cytat
4. Coś za szybko ci idzie z tymi upomnieniami... a jak dostanę drugą żółtą kartkę to mnie wywalisz czy pójdę na ławkę rezerwowych aarambo.gif ?

Za szybko? przeciez dopiero pierwsze. Jestes nowy, wiec masz taryfe ulgowa i narazie ostrzezenie bylo "slowne", nie wpisalem Ci go na liste. A to kiedy idziesz na "lawke rezerwowych" to juz kwestia indywidualna.. zalezy od ciezkosci przewinien, mozesz sobie to zalatwic jednym wybrykiem albo pracowac na to kilkoma mniejszymi smile.gif


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
DeyV
post 14.09.2005, 08:46:54
Post #7





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




w takiej sytuacji nie można oprzeć się tylko na php.
Potrzeba pomocy ... JS.
A jak to zrobić?
Na początek pracy skryptu wyświetlić np. wartstwę z odpowiednim napisem.

A na końcu strony, już po wszystkich operacjach bazodanowych, uruchomić jakąś funkcję, która tą warstę ukryje.
Zresztą - wystarczy dodać wywołanie takowej w <body onload=""

Przy pomocy js można zrobić jeszcze inny ciekawy efekt - preloader, pokazujący postęp prac.
A by działał - wystarczy tylko co jakiś czas (co ileś pętli w skrypcie, co któreś zapyanie..) wyświetlić odpowiedni kod javascriptowy.
Zresztą - w PEAR jest świetna biblioteka służąca do tego.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
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 Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:12