[PHP] problem ze SLEEP

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
SzamanGN
Nowy
Nowy
Posty: 92
Rejestracja: pn lis 27, 2006 3:28 pm
Kontakt:

[PHP] problem ze SLEEP

Post autor: SzamanGN »

Witam,
Mam mały problem z tym skryptem:
[php]<?php
echo 'Tekst przed opóźnieniem.<BR>';
sleep(10);
echo 'Tekst po opóźnieniu.';
?>[/php]
Efekt tego skryptu jest nie taki jak się spodziewałem, tzn.:
po uruchomieniu tego skryptu nic się nie dzieje przez 10 sekund, a po tym czasie jest pokazany napis:
'Tekst przed opóźnieniem.
'Tekst po opóźnieniu.
Teraz mam pytanie:
Dlaczego nie wyświetlił się napis: "Tekst przed opóźnieniem.", a po opóźnieniu reszta?

Testowałem też dodanie flush() przed sleep(10), ale to nic nie zmieniło.
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

Re: [PHP] problem ze SLEEP

Post autor: 123456 »

Dlaczego nie wyświetlił się napis: "Tekst przed opóźnieniem.", a po opóźnieniu reszta?
Bo ta funkcja działa w inny sposób. Wrzuca skrypt do pamięci i po określonym w argumencie funkcji czasie wykonuje skrypt dalej.

Nie można mieć od tak sobie otwartego połączenia przez 10 sekund. Serwery działałyby dużo wolniej i byłyby podatne na wiele ataków w tym czasie. Poza tym wykonywanie dużych skryptów i użycie tej funkcji pochłania dużo pamięci co wpływa niekorzystnie na wydajność serwera dla innych jego użytkowników.

Aby uzyskać to co Ty chcesz, musisz zrobić "sleep" od strony klienta. Klient czeka określony czas i znowu się łączy z serwerem.
SzamanGN
Nowy
Nowy
Posty: 92
Rejestracja: pn lis 27, 2006 3:28 pm
Kontakt:

Re: [PHP] problem ze SLEEP

Post autor: SzamanGN »

Dzięki za informację.

Temat zamknięty.
MirVanos
Nowy
Nowy
Posty: 26
Rejestracja: pt lip 23, 2004 11:15 am
Lokalizacja: Bytom
Kontakt:

Re: [PHP] problem ze SLEEP

Post autor: MirVanos »

hmm
u mnie flush przed sleep'em pomaga - i wtedy taki skrypt działa ok
ODPOWIEDZ