![]() |
![]() ![]() |
![]() |
-Mat00- |
![]()
Post
#1
|
Goście ![]() |
Witam,
Chcę opóźnić wykonanie fragmentu kodu na około 3 minuty. Użyłem ob_flush(); flush(); sleep(); ale nie działają. Blokują wczytanie całej strony na 3 minuty i potem wywalają wszystko naraz. Jest mi to potrzebne ponieważ w jednym z cms chcę dodać punkty użytkownikowi np. za przeczytanie artykułu, ale dopiero po 3 minutach od wejścia. Wszystko działa mi idealnie tylko nie wiem jak opóźnić ten czas... może znacie jakieś zupełnie inne rozwiązania ? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
W PHP ciężko coś takiego zrobić bez kombinacji. Jeśli ma działać na każdym tanim hostingu, to tylko CRON. Stwórz w bazie danych specjalną tabelę do któej będziesz wstawiał zadania do wykonania, może być to np. zserializowany obiekt. Potem CRONem odpalasz taki kod.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Samo opóźnienie wykonania kodu Ci nic nie da. Bo co jeżeli użytkownik wejdzie na stronę, serwer zacznie odliczać trzy minuty, a następnie użytkownik zamknie okno przeglądarki? Musisz nieco inaczej to rozwiązać.
1. Użytkownik wchodzi na stronę - w sesji zapisujesz czas tego wejścia. 2. Na stronie wrzucasz skrypt JS, który przy pomocy AJAX-a, przykładowo co 30-60 sekund wysyła do serwera żądanie, którego celem jest jedynie poinformowanie serwera o tym, że użytkownik nadal jest na stronie. 3. Skrypt, do którego wysyłane jest żądanie z punktu 2. zapisuje sobie w sesji informację o czasie ostatniej aktywności. Ponieważ ma dostęp do tych samych danych (zapisanych w sesji) co skrypt z punktu 1. może porównać czy czas ostatniej aktywności, czyli obecny czas, minus czas rozpoczęcia oglądania (nadany w pierwszym punkcie) jest większy bądź równy trzem minutom - jeżeli tak, wykonaj dowolny kod jaki tam potrzebujesz. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Sposób dobry jeżeli mówimy o własnych podstronach.
Jeżeli chcemy promować cudze strony można pokusić się o ramkę iframe, w której będzie reklamowana strona (100% szerokości). U góry jakiś pasek z licznikiem choć to już kosmetyka i działanie zbliżone do rozwiązania kolegi choć bez ajax co X sekund tylko jeden po odliczeniu czasu. Zalecam wspomóc się sesjami aby skrypt był bardziej bezpieczny. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 08:43 |