Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zapytanie na temat funkcji sleep()
grzegorz_w3
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.12.2009

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


Witam
Mam taki problem, chcę aby skrypt wyświetlił mi informacje, a później zasną.

Jeśli napisze taki skrypt:

  1. <?php
  2. print('start');
  3. sleep(20);
  4. print('koniec');
  5. ?>


skrypt wyświetli wszystko dopiero wtedy gdy się wybudzi, a chodzi mi o to aby słowo "start" wyświetlał przed zaśnięciem, a słowo "koniec" po przebudzenie. Czy jest to możliwe??
Prośże o pomoc.
Z góry dziękuje.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


flush ?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Fifi Ci dobrze podpowiada. Musisz wywalić wszystko na ekran zanim funkcja sleep się wykona. Problem jest czasem z flushem taki jednak, że w pewnych konfiguracjach i tak nie chce tego zrobić, ponieważ bufor nie jest jeszcze odpowiednio zapełniony. Dlatego trzeba walić kilka różnych funkcji by rzeczywiście miało to miejsce. Zwróć zwłaszcza uwagę na pierwszy komentarz do funkcji ob_flush.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
grzegorz_w3
post
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.12.2009

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


A czy ktoś mógłby zapodać jakiś przykład bo ja próbowałem i mi jakoś nie chce działać.
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pokaż kod jak próbowałeś, bo coś Ci nie wierzę smile.gif Po moim i fifiego poście nie ma prawa nie działać.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
grzegorz_w3
post
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.12.2009

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


  1. <?php
  2. print('start ');
  3. sleep(5);
  4. print('koniec');
  5. ?>


Go to the top of the page
+Quote Post
thek
post
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To poczytaj teraz komentarz numer 1 przy manualu do ob_flush i uzupełnij brakujące funkcje smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
grzegorz_w3
post
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.12.2009

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


  1. <?php
  2. function flush_buffers(){
  3. flush();
  4. }
  5. print('start ');
  6. flush_buffers();
  7. sleep(5);
  8. print('koniec');
  9. ?>


Probowalem tak i tez nie dziala
Go to the top of the page
+Quote Post
kapuch
post
Post #9





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

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


Sprawdzone...dziala:
  1. <?php
  2. echo 'START<br />';
  3. for($i=0; $i<10; $i++)
  4. {
  5. echo $i.'<br />';
  6. flush();
  7. sleep(1);
  8. }
  9. echo $i.'<br />KONIEC';
  10. ?>


--------------------
Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
Go to the top of the page
+Quote Post
grzegorz_w3
post
Post #10





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.12.2009

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


Ale dlaczego bez pętli nie działa?
Go to the top of the page
+Quote Post
flashdev
post
Post #11





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

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


Ciekawe, w chrome poniższy kod nie działa tak jak w innych przeglądarkach.

  1. for( $i = 0; $i < 10; $i++ ){
  2. echo $i . '<br/>';
  3. flush();
  4. sleep(1);
  5. }


Może to że nie działa to wina przeglądarki, a nie kodu php?


--------------------
Go to the top of the page
+Quote Post
kapuch
post
Post #12





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

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


Cytat(grzegorz_w3 @ 4.08.2010, 17:07:21 ) *
Ale dlaczego bez pętli nie działa?

Jak zle robisz to nie dziala, mi bez petli tez dziala.
  1. $i = 0;
  2. echo $i.'<br />';
  3. sleep(5);
  4. $i++;
  5. echo $i.'<br />';
  6. sleep(5);
  7. $i++;
  8. echo $i;

Dostales juz kilka gotowcow i nadal masz problemy.

Ten post edytował kapuch 4.08.2010, 16:24:12


--------------------
Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Jak zle robisz to nie dziala, mi bez petli tez dziala.

To zależy od serwera i czy coś jest już w buforze httpd. Niestety, bywają z tym cyrki, więc tak nie bluzgajcie. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kapuch
post
Post #14





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

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


Cytat(erix @ 4.08.2010, 17:43:10 ) *
To zależy od serwera i czy coś jest już w buforze httpd. Niestety, bywają z tym cyrki, więc tak nie bluzgajcie. tongue.gif

No ale on napisal "Ale czemu to bez petli nie dziala", wiec domyslam sie ze z przegladarka ma wszystko OK winksmiley.jpg
Ale autor juz sie nie wypowiada, wiec pewnie juz mu dziala winksmiley.jpg


--------------------
Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
Go to the top of the page
+Quote Post
thek
post
Post #15





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A teraz proszę zerknąć sobie do mojego posta i doczytać:
Cytat
Problem jest czasem z flushem taki jednak, że w pewnych konfiguracjach i tak nie chce tego zrobić, ponieważ bufor nie jest jeszcze odpowiednio zapełniony.
W większości przypadków użycie wielu możliwych funkcji flushujących pomaga, aczkolwiek zawsze jest ten niewielki odsetek gdzie trzeba mocno się nagimnastykować. Poczytaj komentarze pod tymi funkcjami... Na bank gdzieś powinna być informacja co w takich wypadkach zrobić smile.gif Wątpię, że sobie z tym nikt nie poradził winksmiley.jpg


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
kapuch
post
Post #16





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

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


No tak, ale jemu musi dzialac skoro napisal, ze nie dziala mu, gdy wyciagnie to z petli, czyli ze w petli dziala winksmiley.jpg

Ten post edytował kapuch 4.08.2010, 21:14:54


--------------------
Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
Go to the top of the page
+Quote Post
thek
post
Post #17





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A teraz popatrz na to tak, że w pętli może nastąpić wypełnienie bufora w określonym momencie i wtedy nastąpi wyświetlenie (choćby co 2-3 kroki pętli). Oczywiście to tylko moje przypuszczenie, gdyż nie widzę jak kod działa na jego maszynie. Ogólnie jeśli ma taki problem, to powinien pokombinować jak dopełnić bufor by flushowanie zadziałało.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
kapuch
post
Post #18





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

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


Cytat(thek @ 4.08.2010, 22:54:56 ) *
A teraz popatrz na to tak, że w pętli może nastąpić wypełnienie bufora w określonym momencie i wtedy nastąpi wyświetlenie (choćby co 2-3 kroki pętli). Oczywiście to tylko moje przypuszczenie, gdyż nie widzę jak kod działa na jego maszynie. Ogólnie jeśli ma taki problem, to powinien pokombinować jak dopełnić bufor by flushowanie zadziałało.

No fakt, o tym nie pomyslalem winksmiley.jpg


--------------------
Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
Go to the top of the page
+Quote Post
-juniordev-
post
Post #19





Goście







Ja niestety, mam ten sam problem. Gdy sprawdzałem przykłady pod FireFox 6.0 jaki najnowszym Chrome to nie działa. Czy jest to może wina zapełnienia bufora, jak było to powiedziane wyżej? jeżeli tak to w jaki sposób można dopełnić bufor?
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 Aktualny czas: 21.08.2025 - 06:37