Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: opóźnienei wykonywania części skryptu
Forum PHP.pl > Forum > PHP
habor
Witam.

Mam problem z opóźnieniem wykonywania skryptu

kod wygląda następująco:

  1. <?php
  2. echo 'To wyswietlone bedzie od razu';
  3. sleep(5);
  4. echo '<br><br>A to po 5 sekundach';
  5. ?>


skrypt jest opóźniony w całości zamiast częściowo.
Jak to rozwiązać?

Pozdrawiam
nospor
No niestety w wiekszosci przypadków taki mechanizm nie będzie działać. Może opisz problem dokładniej, co chcesz tym osiągnąć, to może uda się znaleźć inne rozwiązanie
Uriziel01
Tak jak napisał mój poprzednik kod PHP musi zostac wykonany w całosci przed wyświetleniem wyniku, mozna to obchodzić przez funkcje buforu wyjścia 'ob_' ale i tak zadziała to tylko w niewielu przypadkach . Znacznie prościej będzie jeżeli utworzysz drugi plik .php który wyświetlał będzie ten drugi napis. A w obecnym pliku PHP dodasz skrypt JavaScript uzywający AJAX'a (Tutorial: http://ajaxin.pl/2007/01/17/tutorial-hello-world/) i opuźnisz jego wykonanie o te 5 sekund przed funckje w JavaScript setTimeout(. To tak w telegraficznym skrócie.


P.S-Jeżeli wykorzystanie AJAX'a okaże się dla Ciebie zbyt trudne, polecam użycie gotowej już funkcji z biblioteki JQuery, w internecie znajdziesz na ten temat dziesiątki tutoriali.

Paweł.
habor
opóźnienie jest mi potrzebne w celu wymuszenia na użytkowniku przeczytania informacji przed kliknięciem przycisku "dalej". Najlepiej jak ten przycisk "dalej" pojawił by się po upływie kilku sekund.
Uriziel01
No to nie lepiej zrobić jakiś checkbox mówiący 'Tak przeczytałem ten niezwykle ważny regulamin' i dopiero po jego zaznaczeniu wyświetlać przycisk dalej ? Jeżeli ci to nie odpowiada, to poprostu użyj moich wskazówek z postu powyżej smile.gif
habor
Zrobiłem za pomocą javascript.

Na starcie przyciska jest ustawiony na disabled, po upływie 5s przycisk aktywuje się i ustawia się na nim focus.
Fajne rozwiązanie.

  1. <script type='text/javascript'>
  2. function Opoznienie()
  3. {
  4. document.getElementById('tak').disabled=false;
  5. }
  6. setTimeout('Opoznienie()',5000);
  7. document.form1.tak.focus();
Uriziel01
Super że jednak sobie poradziłeś z problemem. Tylko czy wiesz że tak wykonane zabezpieczenie (treść jest już w przeglądarce ale jest ukryta) jest banalnie proste do kliknięcia, jest to kwestia dwoch kliknięć myszy. Mimo wszystko, jeżeli bezpieczeństwo nie jest tam jakieś szczególnie ważne to zostaw to tak jak jest teraz smile.gif
habor
Ekrany są dotykowe, użytkownik raczej nie ma możliwości kliknięcia czegokolwiek poza moimi przyciskami.

Dodatkowo ma takie pytanie, jak napisać skrypt który na samym starcie otwiera przeglądarkę OPERA w fullscreen?
Wszystkie które znalazłem na necie robią to ale tylko w IE.
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.