Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dynamiczna czy statyczna strona?
Forum PHP.pl > Forum > PHP
Najki
Spotkałem się z dwoma sposobami przesyłu danych z php do przeglądarki. Pierwszy to wysyłanie do przeglądarki gotowego kodu po zakończonej generacji go. Drugi to wysyłanie efektów pracy php na bieżąco do przeglądarki (przykład: skrypt łączący się z siecią IRC, który na bieżąco wyświetla wyniki, które otrzymuje z sieci IRC).

Co trzeba zrobić, aby osiągnąć tą drugą opcję? (a może to tylko złudzenie?)
luinnar
nie wiem czy o to ci chodzi luknij -> http://php.pl/nowosci/ajax_technologia_roku
Seth
O to chodzi ? winksmiley.jpg
  1. <?php
  2. for ($i = 0; i <= 50; $i++)
  3. {
  4.  echo $i . "<br /> n";
  5.  flush();
  6.  
  7.  sleep(1);
  8. }
  9. ?>
Sh4dow
A moze chodzi o oddzielenie warstwy logicznej od wizualnej (czy jak to tam sie nazywalo ? )
Albo o ustawienie bufora w apache ?
Rkingsmiley.png
Najki
@luinnar: nie o to mi chodziło, ale też ciekawe winksmiley.jpg.

@Seth: właśnie tak, dzięki wielkie!

@Sh4dow: nie smile.gif.
Sh4dow
no ale buffora dla apache jednak to prawie to samo co seth. ale tylko przy odpowiednich ustawieniach Rkingsmiley.png
Pozdrawiam
nuerher
Użycie funkcji flush daje mi trochę do myślenia. Czy aby się opłaca to dla serwera, gdyż wysyła załóżmy 100 rekordów pobranych z jakieś tabeli w bazie, następnie pobiera dane innej, a okazuje się, że jest błąd w zapytaniu i, że tak to ujmę, na marnę poszły te Bajty wysłane przez serwer, a gość tylko nie potrzebnie pobrał ich parę.

Druga sprawa, to sleep. Czeka jedną milisekundę... czy aby potrzebnie. Opóźnia tylko wykonanie skryptu.

---
Jeśli piszę trzy po trzy to powiedziedźcie. Nie jestem z wykształcenia informatykiem, a kodowaniem się po prostu interesuję.
nospor
Cytat
Czy aby się opłaca to dla serwera, gdyż wysyła załóżmy 100 rekordów pobranych z jakieś tabeli w bazie, następnie pobiera dane innej, a okazuje się, że jest błąd w zapytaniu i, że tak to ujmę, na marnę poszły te Bajty wysłane przez serwer, a gość tylko nie potrzebnie pobrał ich parę.
Z jednej strony masz rację. Ale rozważ taką sytuację. To pobieranie rekordów trwa powiedzmy minutę. Człowiek ma taką naturę że jak coś odpala i przez 5 sekund nic się nie dzieje, to szlag go trafia a nie wspomnę o minucie. Większośc nie doczeka tej minuty i pomyśli że jest coś zwalone i zakończy proces. A gdy będzie wyświetlana informacja o postępie, to gostek widzi że coś sie dzieje, że jest ok i wie w przybliżeniu ile jeszcze musi poczekać. Nawet jeśli przy 99% pojawi się błąd to i tak opłaca się pobrać tych pare bajtów dla spokojności użytkownika.

Co do sleep(). Zostało ono zastosowane, aby te dane wyświetlaly się powoli i żeby można było zobaczyć efekt dzialania flush. Gdyby nie było sleep dane by wyskoczyly tak szybko, jakby zostały wyswietlone wszystkie naraz.

pozdro
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.