[PHP] Wywołanie funkcji sleep()

0

Witam!

Mam taki oto kawałek kodu:

if($result = mysql_query($sql)){

    echo 'Rekord został dodany';
    sleep(5);
    //przekierowanie na strone 
    header('Location: strona.php');

}

Oczekiwał bym od niego, że po wykonaniu zapytania (dodania rekordu do bazy) wyświetli się na ekranie
komunikat 'Rekord został dodany' i będzie widoczny przez 5s po czym nastapi przekierowanie na strone: strona.php. Tymczasem komunikat sie nie wyswietla a przeciez jest przed wywolaniem funkcji sleep(). Jak to wiec z tym jest?

0

Komunikat siedzi sobie w buforze na serwerze. Teoretycznie twoim problemem jest brak http://pl2.php.net/flush (czy też http://pl2.php.net/ob_flush ), jednak użycie tych funkcji nic ci nie da przy tak zaprojektowanym kodzie.

Nagłówki PRZED treścią!

0

tutaj tylko i wyłącznie redirect wywołany przez klienta (przeglądarke).

0

Wiesz, PHP jest server-side, czyli jedyne co ten sleep() robi, to zwieszenie PHP na pięć sekund, po czym kontynuowanie egzekucji. Po prostu zrób redir i się niczym nie przejmuj.

0

Nie bardzo wiem jak zrobić z tym redirect. Ogólnie walcze z tym, że dodaje za pośrednictwem formularza rekordy do bazy. Problem w tym, że po dodaniu jednego rekordu do bazy dodaja sie nastepne jesli tylko ktos użyje przycisku 'Odśwież' przeglądarki. Wymyslilem z tym przekierowaniem i to rzeczywiscie dziala tzn. po dodaniu strona zostaje przeladowana i tym samym zmienne wyslane za posrednictwem formularza skasowane co z kolei zapobiega dodawaniu kolejych (niechcianych) rekordow. Chcialem to wszystko wzbogacic o komunikat: 'Rekord zostal dodany', ktory wyswietla sie na moment ale niestety tym sposobem nie za bardzo to wychodzi.

0

Zamiast location wyślij nagłówek:
Refresh: 5; url=http://adres_serwera.pl/strona.php albo skożystaj<ort></ort> z tagu <meta http-equiv="refresh">

Edit
Ma "skorzystać" ;-)

0
Kicok napisał(a)

skożystaj
Co ma zrobić? ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1