Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: AJAX - pobieranie danych ze strumienia
Forum PHP.pl > Forum > XML, AJAX
Seth
Mam pewien problem, a raczej koncepcja na rozwiazanie jednej rzeczy.
Chodzi o pasek postepu i jego stala aktualziacje na podstawie danych wyslanych przez PHP a pobieranych AJAXem.

Do serwera wysylam rzadanie AJAXem. Gdy skrypt skonczy dzialanie, AJAX pobiera dane wynikowe, ktore przekazal skrypt.
Ciekaw jestem czy jest jakas mozliwosc pobierania na biezaco danych, ktore przesyla skrypt jako odpowiedz AJAXowa.

Nieco bardziej to zobrazuje.

Wysylam rzadanie do serwera za pomoca AJAXa. Serwer przetwarza to rzadanie i co kazdy przetworzony element przygotwuje odpowiedz powiedzmy w formie cyfry (0-100) oddzielonej nowa linia.
Jako, ze po przetworzeniu jednego elementu, skrypt nie konczy dzialania, a caly czas je przetwarza, po kazdym przetworzonym elemencie wysyla (a raczej dopisuje do odpowiedzi) cyfre + nowa linie.
Czyli np tak:
Kod
1
2
3
4
5
6
... itd.


Oczywiscie miedzy tymi "cyframi" sa dluzsze lub krotsze przerwy w wypisywaniu kolejnej pozycji.

Dzialanie np jquery jest takie, ze oczekuje on na zakonczenie calej operacji - czyli kiedy skrypt zakonczy calkowicie dzialanie, i dopiero wtedy przekazuje cala odpowiedz.
Mnie natomiast chodzi o to, aby po kazdej nowej linii otrzymac ta odpowiedz, moc wykonac jakas operacje (w tym przypadku zwiekszyc graficzny pasek postepu) i oczekiwac na kolejna linie.
Tak samo jakbym nasluchiwal socketami na okreslonym porcie.

Czy jest to wykonalne za pomoca AJAXa w takiej formie jak opisuje?


Innym rozwiazaniem tego bylo by po prostu wyslanie rzadania do serwera. Ten zakonczy polaczenie z przegladarka ale nadal bedzie sie wykonywal i po kazdym przetworzonym elemencie dopisywal by je do jakiegos pliku logow albo do bazy.
Nastepnie co 1s. odpalal bym innego AJAXa z rzadniem o pobranie aktualnego statusu przetwarzanego rzadania.
Co sadze tez jest dobrym rozwiazaniem smile.gif
tomeksobczak
niby jest taki event onInteractive ale z tego co wiem to nie jest w pelni kompatybilny pomiedzy przegladarkami
php programmer
Wydaje mi się, że rozwiązanie jest całkiem proste,

Wywołujesz Ajax'em skrypt php, który coś tam robi w tle,
ten skrypt zapisuje jednocześnie postęp (w procenach) w ciastku,

Natomiast w skrypcie głównym, wywołujesz w JavaScript poprzez funkcję setInterval
co jedną sekundę swoją funkcję JS, która sprawdza to ciastko,
i pokazuje/odswieża procent postępu,
bo JS ma bezpośrednią możliwość czytania ciastek,
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.