Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
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 ?
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.
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ę (IMG:style_emoticons/default/smile.gif) Po moim i fifiego poście nie ma prawa nie działać.
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 (IMG:style_emoticons/default/smile.gif)
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. ?>
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
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. (IMG:style_emoticons/default/tongue.gif)
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. (IMG:style_emoticons/default/tongue.gif)

No ale on napisal "Ale czemu to bez petli nie dziala", wiec domyslam sie ze z przegladarka ma wszystko OK (IMG:style_emoticons/default/winksmiley.jpg)
Ale autor juz sie nie wypowiada, wiec pewnie juz mu dziala (IMG:style_emoticons/default/winksmiley.jpg)
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ć (IMG:style_emoticons/default/smile.gif) Wątpię, że sobie z tym nikt nie poradził (IMG:style_emoticons/default/winksmiley.jpg)
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 (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował kapuch 4.08.2010, 21:14:54
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.
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 (IMG:style_emoticons/default/winksmiley.jpg)
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 16:03