Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] [ajax], pasek postępu
Cezar708
post
Post #1





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Witam,

mam do wykonania pasek postępu. Ma się pojawić po wysłaniu formularza poprzez AJAX. Na serwerze wykonują się zapytania do bazy, jest ich strasznie dużo, więc trochę to potrwa. Niestety nie mam dobrego pomysłu jak taki pasek postępu wykonać. A tak naprawdę nie wiem jak ściągać postęp *wynik procentowy) z serwera.

na początku wykonywania skryptu obsługującego formatkę sprawdzam ile będzie w sumie zapytań (wz - akurat dość łatwo to obliczyć). Następnie za każdym razem gdy kolejne zapytanie jest wykonane zwiększam licznik wykonanych zapytań (z).

następnie wg wzoru:

Cytat
wynik [%] = round( z/wz * 100);


obliczam progres. Następnie ten wynik chciałem skądyś ściągnąć tylko, że nie mam pojęcia jak (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

oto jak próbowałem:

1. Za pomocą AJAXa próbowałem ściągnąć wartość wyniku z sesji. Ale chyba dwa procesy nie mają dostęp do tego samego pliku sesji. Próba nie wyszła... nic nie udało się ściagnąć

2. wynik zapisywałem w pliku zewnętrznym, a następnie za pomocą ajaxa, próbowałem odczytać tę wartość... próba znowu się nie udała.

Czy ktoś z Was miał kiedyś taki problem? jeśli tak to jak sobie z nim poradziliście.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kitol
post
Post #2





Grupa: Zarejestrowani
Postów: 162
Pomógł: 26
Dołączył: 19.01.2007

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


Ajax nie jest potrzebny. Wszystko działa podczas jednego długiego ładowania strony. Wygląda to w ten sposób, że po wysłaniu tego co nazwałem "headerem" a więc nagłówka strony z javascriptem zaczyna się on wykonywać cyklicznie. Mamy więc tak jakby dwa równolegle działające procesy: z jednej strony serwer wykonujący zapytania i po każdym dopisujący do treści informacje (znaczniki) 2. działający cyklicznie JS odbierający i analizujacy informacje (znaczniki). Cała filozofia opiera się o to, że JS zaczyna działać zanim ładowanie całej strony zostanie ukończone.

EDIT:
Wygrzebałem kod:

  1. <html>
  2. <head>
  3. <script language="JavaScript">
  4. <!--
  5. var loaded=0;
  6. setTimeout("info()",1000);
  7. function info() {
  8. txt=document.body.innerHTML;
  9. ar=txt.split("_prg_:");
  10. prg=ar[ar.length-1];
  11. if (ar.length>1) document.getElementById('progress').innerHTML="Liczba wykonanych zapytan: "+ prg;
  12. setTimeout("info()",1000);
  13. }
  14. //-->
  15. </script>
  16. </head>
  17. <body>
  18. <div id="progress">&nbsp; </div>
  19. <div id="ukryj">
  20. <?php
  21. for ($i=0;$i<100;$i++) {
  22. echo "\n_prg_:".$i;
  23. flush();
  24. sleep(1);
  25. }
  26. ?>
  27. </div>
  28. </body>
  29. </html>


specjalnie nie ukrywałem diva ze znacznikami (id="ukryj") bo lepiej widać jak to działa.

Ten post edytował kitol 14.04.2008, 14:12:00
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 17:32